0

myvar我的意思是打印一个未知类型的变量的值,与任意文本连接,没有换行符。

我知道如何在没有换行符的情况下打印: printf('My var = %<format specifier>, is it ok for you?', myvar),但这需要知道myvar.

我知道如何打印未知类型变量的值: disp(myvar),但这总是打印一个换行符(除了我不知道如何连接 via 的事实disp)。

我将如何My var = <any variable>, is it ok for you?<no newline>打印?

4

1 回答 1

0

你真的不能那样做。Octave 并不是真的那样工作。

但是,您可以做的是准备好 sprintf 生成的字符串,您可以将其插入到您的输出中。例如

var1 = 123;    % double
var2 = 'abc';  % char
var3 = cell(); % cell

Var = var2;   % choose from var1, var2, or var3

switch class(Var)
  case {'double'}, FormattedStr = sprintf('Value is %d', Var);
  case {'char'}  , FormattedStr = sprintf('Value is %s', Var);
  case {'cell'}  , % ... etc
  otherwise      , FormattedStr = sprintf('Value is unknown');
end

fprintf( 'As I said before: %s', FormattedStr);

或者,您可以创建一个“toString”函数来尝试检测类型并返回适当的字符串表示形式。

如果您真的想使用 disp 的输出,那么理论上您可以使用fdisp写入文件,然后从该文件中读回并相应地处理换行符。但我认为这是矫枉过正。

于 2020-08-10T18:11:35.690 回答