4

Octave 使用 strcat 添加空格

在 Octave 中,我运行以下命令:

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

我得到这个结果:

ans = hello

而不是我所期望的:

ans = hel lo

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

我觉得它违反直觉。这种行为有意义吗?

4

2 回答 2

4

唔。它的工作原理是如何定义的:

“strcat 删除参数中的尾随空格(单元格数组中除外),而 cstrcat 保留空格不变。”

来自http://www.gnu.org/software/octave/doc/interpreter/Concatenating-Strings.html

所以问题可能是:是否应该改变这种行为。

于 2012-12-24T22:00:25.650 回答
1

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
于 2012-12-24T21:58:26.383 回答