Octave 使用 strcat 添加空格
在 Octave 中,我运行以下命令:
strcat ("hel", " ", "lo")
我得到这个结果:
ans = hello
而不是我所期望的:
ans = hel lo
strcat 对我来说听起来像“连接字符串”。空格是有效字符,所以添加空格应该没问题。Matlab 具有相同的行为,因此可能是有意的。
我觉得它违反直觉。这种行为有意义吗?
唔。它的工作原理是如何定义的:
“strcat 删除参数中的尾随空格(单元格数组中除外),而 cstrcat 保留空格不变。”
来自http://www.gnu.org/software/octave/doc/interpreter/Concatenating-Strings.html
所以问题可能是:是否应该改变这种行为。
strcat 接受输入参数并修剪尾随空格,但不修剪前导空格。如果您将参数作为一个或多个空格传递,它们将折叠为空白字符串。
这种行为体现了“cellstr”如何在末尾的空格被删除的情况下工作。
工作 1
如果你把空格放在'lo'上,它是一个前导空格,不会被删除。
strcat ("hel", " lo")
ans = hel lo
工作 2
改用 cstrcat :
cstrcat("hel", " ", "lo")
ans = hel lo
在 3 左右工作
使用 sprintf,可以比 strcat 更快。
sprintf("%s%s%s\n", "hel", " ", "lo")
ans = hel lo