Cスタイル文字列 パート2
CoddyのC++ジャーニー「基礎」セクションの一部 — レッスン 68/74。
特定のサイズでC言語スタイルの文字列を宣言するときは、格納したい文字に加えて、ヌル文字(null character)用にもう1つ分のスペースを確保する必要があることを覚えておくことが重要です。
例えば:
// 正解: "Hello" には6文字分のスペースが必要です
// (5文字 + '\0')
char str1[6] = "Hello";// 間違い:配列が小さすぎます!
// "Hello" には6文字分のスペースが必要ですが、5つしか指定されていません
char str2[5] = "Hello";
// これは問題を引き起こす可能性があります// 正解:余分なスペースがあっても問題ありません
// 十分なスペースがあります(6文字必要ですが10文字確保されています)
char str3[10] = "Hello";// 文字数を示す例:
char name[5] = "John"; // 5つのスペースが必要です:
// J + o + h + n + '\0' = 5文字Cスタイルの文字列内の個々の文字には、配列記法を使用してアクセスできます。
char str[] = "Hello";
char first = str[0]; // 'H'
char third = str[2]; // 'l'配列の範囲を超えない限り、C言語スタイルの文字列内の文字を変更することもできます:
char str[] = "Hello";
str[0] = 'J';
std::cout << str; // "Jello" を出力しますしかし、C言語スタイルの文字列は、宣言した後に新しい文字列を直接代入することはできません。文字列をコピーするには、strcpyのような関数を使用する必要があります。これについては後のレッスンで説明します。
チートシート
Cスタイルの文字列を宣言するときは、すべての文字に加えて、ヌル終端文字 '\0' のためのスペースを1つ確保します:
// 正解: "Hello" には6つのスペース(5文字 + '\0')が必要です
char str1[6] = "Hello";
// 間違い: 配列が小さすぎます!
char str2[5] = "Hello"; // これは問題を引き起こす可能性があります
// 正解: 余分なスペースがあっても大丈夫です
char str3[10] = "Hello";配列記法を使用して個々の文字にアクセスします:
char str[] = "Hello";
char first = str[0]; // 'H'
char third = str[2]; // 'l'配列の範囲内で文字を変更します:
char str[] = "Hello";
str[0] = 'J';
std::cout << str; // "Jello" を出力します注意:宣言後にCスタイルの文字列に新しい文字列を直接代入することはできません。文字列のコピーには strcpy のような関数を使用してください。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。