13

文字列コンストラクトは、次のようにしてデータ用のスペースを取得しました

new char[strlen(cp)+1];

文字列には文字しかないのでstrlen(cp)、余分なバイトは何のためにあるのでしょうか?

4

2 に答える 2

22

文字列の終わりを示す特殊な'\0'文字用。

( C スタイルの文字列null で終わる配列であることを思い出してください)。

その他の役立つメモ:

  • strlen はカウントされません(そのため、この余分なバイト'\0'が必要です)。
  • strcpy をコピーします'\0'
  • char str[7] = "String";- 自動的に追加'\0'されます。
  • char str[] = {'S','t','r','i','n','g'}-追加しません'\0'
  • char str[7] = {'S','t','r','i','n','g'}-追加し'\0'ます。
于 2012-11-16T15:06:22.693 に答える
2

C ベースの文字列では、文字列の末尾に常に特殊文字があり、'\0'これにも追加のバイトが必要です。これが、追加の文字が必要な理由であり、strlen(str)+1文字列を格納するための配列が必要です。

于 2012-11-16T16:00:21.200 に答える