Octave中如何无换行打印未知类型变量与任意文本的拼接内容
搞定未知类型变量拼接文本的无换行输出
哈哈,这个痛点太真实了——printf要指定格式符但变量类型摸不准,disp虽然能打印任意变量但硬要加换行还没法直接拼文本。别慌,给你个简单又靠谱的解决方案:
核心思路就是把未知类型变量先转成通用字符串,再用fprintf实现无换行拼接输出,具体看这两种方法:
方法1:用mat2str()转变量(最推荐)
mat2str()是Matlab专门用来把任意变量(不管是数值、数组、结构体甚至自定义对象)转换成可读字符串的工具,完全不用操心格式符。直接把它和你的固定文本一起丢给fprintf就行,fprintf默认不会自动加换行,刚好符合要求:
举个例子,不管myvar是啥类型,代码都这么写:
% 假设myvar是任意类型变量,比如二维数组/字符串/结构体 fprintf('My var = %s, is it ok for you?', mat2str(myvar));
要是你的myvar本身是字符串,mat2str会给它套上引号,如果你不想保留引号,可以改成这样:
myvar = 'I am a string'; fprintf('My var = %s, is it ok for you?', char(string(myvar)));
方法2:捕获disp的输出再处理(备选)
如果你更习惯用disp,可以先把disp的输出捕获到字符串里,去掉自带的换行符,再用fprintf输出:
% 捕获disp的输出,evalc会把命令的输出存成字符串 temp_output = evalc('disp(myvar)'); % 去掉前后的换行和多余空格 temp_output = strtrim(temp_output); % 拼接输出 fprintf('My var = %s, is it ok for you?', temp_output);
不过还是优先推荐第一种方法,mat2str专门干这个活,比捕获输出更直接可靠。
内容的提问来源于stack exchange,提问作者sancho.s ReinstateMonicaCellio
相关产品推荐
相关产品推荐

