文字列コンストラクトは、次のようにしてデータ用のスペースを取得しました
new char[strlen(cp)+1];
文字列には文字しかないのでstrlen(cp)、余分なバイトは何のためにあるのでしょうか?
文字列コンストラクトは、次のようにしてデータ用のスペースを取得しました
new char[strlen(cp)+1];
文字列には文字しかないのでstrlen(cp)、余分なバイトは何のためにあるのでしょうか?
( 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'ます。C ベースの文字列では、文字列の末尾に常に特殊文字があり、'\0'これにも追加のバイトが必要です。これが、追加の文字が必要な理由であり、strlen(str)+1文字列を格納するための配列が必要です。