Octave使用strcat
添加空格在Octave中我运行这些命令:
strcat ("hel", " ", "lo")
我得到了这个结果:
ans = hello
而不是我的预期:
ans = hel lo
对我来说strcat听起来像是“连接字符串”。空格是有效字符,因此添加空格应该没问题。 Matlab具有相同的行为,所以它可能是有意的。
我发现它反直觉。这种行为有意义吗?
答案 0 :(得分:4)
嗯。它的工作方式如下:
“strcat删除参数中的尾随空格(单元格数组中除外),而cstrcat保持不变的空白。”
来自http://www.gnu.org/software/octave/doc/interpreter/Concatenating-Strings.html
所以问题可能是:是否应该改变这种行为。
答案 1 :(得分:0)
strcat获取输入参数并修剪尾随空格,但不修剪前导空格。如果将参数作为一个或多个空格传递,则它们将折叠为空白字符串。
这种行为表明“cellstr”如何在最后的空格被移除的情况下起作用。
解决1
如果你把空间放在'lo'上面,它就是一个前导空格而不是被移除。
strcat ("hel", " lo")
ans = hel lo
解决2
改为使用cstrcat:
cstrcat("hel", " ", "lo")
ans = hel lo
解决3
使用printf,可以比strcat更快。
printf("%s%s%s\n", "hel", " ", "lo")
hel lo