Octave strcat忽略添加的空格

时间:2012-12-24 21:55:47

标签: linux octave spaces strcat

Octave使用strcat

添加空格

在Octave中我运行这些命令:

strcat ("hel", " ", "lo") 

我得到了这个结果:

ans = hello

而不是我的预期:

ans = hel lo
对我来说strcat听起来像是“连接字符串”。空格是有效字符,因此添加空格应该没问题。 Matlab具有相同的行为,所以它可能是有意的。

我发现它反直觉。这种行为有意义吗?

2 个答案:

答案 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