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 は入力パラメーターを受け取り、末尾のスペースを削除しますが、先頭のスペースは削除しません。パラメーターを 1 つ以上のスペースとして渡すと、それらは折りたたまれて空白の文字列になります。

その動作は、最後のスペースが削除された場所で「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 に答える