C++ の文字列配列 – 5 つの異なる作成方法
C++ では、文字列は通常、NULL 文字 ' で終わる文字 (または文字への参照/ポイント) の配列にすぎません。 「。」文字列は文字の 1 次元配列であり、文字列の配列は文字の 2 次元配列です。 ここで、各行には何らかの文字列が含まれます。
以下に、C++ で文字列の配列を作成する 5 つの異なる方法を示します。
- 使用する ポインタ
- 使用する 2 次元配列
- を使用して、 文字列クラス
- を使用して、 ベクトルクラス
- を使用して、 配列クラス
1. ポインタの使用
ポインタはアドレスの記号表現です。簡単に言えば、ポインタは変数のアドレスを格納するものです。このメソッドでは、文字列リテラルの配列がポインターの配列によって作成されます。 各ポインターは特定の文字列を指します。
例:
C++
// C++ program to demonstrate> // array of strings using> // pointers character array> #include> // Driver code> int> main()> {> > // Initialize array of pointer> > const> char> * colour[4]> > = {> 'Blue'> ,> 'Red'> ,> 'Orange'> ,> 'Yellow'> };> > // Printing Strings stored in 2D array> > for> (> int> i = 0; i <4; i++)> > std::cout < < colour[i] < <> '
'> ;> > return> 0;> }> |
出力
Blue Red Orange Yellow
説明:
- 文字列の数は固定されていますが、固定である必要はありません。 4 は省略でき、コンパイラは正しいサイズを計算します。
- これらの文字列は定数であり、その内容は変更できません。文字列リテラル (文字通り、引用符で囲まれた文字列) はメモリの読み取り専用領域に存在するため、プログラムをクラッシュさせる可能性のある不要なアクセスを防ぐために、ここで const を指定する必要があります。
2. 2D 配列の使用
2 次元配列は、データを表形式で格納する多次元配列の最も単純な形式です。この方法は、すべての文字列の長さがわかっていて、特定のメモリ フットプリントが必要な場合に便利です。文字列用のスペースは 1 つのブロック内に割り当てられます
例:
C++
// C++ program to demonstrate> // array of strings using> // 2D character array> #include> // Driver code> int> main()> {> > // Initialize 2D array> > char> colour[4][10]> > = {> 'Blue'> ,> 'Red'> ,> 'Orange'> ,> 'Yellow'> };> > // Printing Strings stored in 2D array> > for> (> int> i = 0; i <4; i++)> > std::cout < < colour[i] < <> '
'> ;> > return> 0;> }> |
出力
Blue Red Orange Yellow
説明:
- 文字列の数とサイズは両方とも固定です。 4 も省略できます。適切なサイズはコンパイラによって計算されます。ただし、コンパイラが適切なメモリ レイアウトを選択できるように、2 番目の次元 (この場合は 10) を指定する必要があります。
- 各文字列は変更できますが、2 番目の次元で指定されたスペース全体が占有されます。それぞれはメモリ内で隣り合って配置され、サイズを変更することはできません。
- 場合によっては、メモリ フットプリントを制御することが望ましい場合があり、これにより、固定された規則的なレイアウトでメモリ領域が割り当てられます。
3. String クラスの使用
STL文字列または 文字列クラス 変更可能な文字列の配列を作成するために使用できます。このメソッドでは、文字列のサイズは固定されておらず、文字列は変更できるため、本質的に動的になります。 std::文字列 組み込み関数を使用して文字列配列を作成するために使用できます。
例:
C++
// C++ program to demonstrate> // array of strings using> // string class> #include> #include> // Driver code> int> main()> {> > // Initialize String Array> > std::string colour[4]> > = {> 'Blue'> ,> 'Red'> ,> 'Orange'> ,> 'Yellow'> };> > // Print Strings> > for> (> int> i = 0; i <4; i++)> > std::cout < < colour[i] < <> '
'> ;> }> |
出力
Blue Red Orange Yellow
説明:
配列のサイズは固定ですが、固定である必要はありません。ここでも 4 は省略でき、コンパイラが配列の適切なサイズを決定します。文字列も可変であり、変更することができます。
4. ベクタークラスの使用
あ ベクター は、制限を超える新しい文字が追加されるたびにサイズが 2 倍になる動的配列です。 STL コンテナ ベクトルを使用すると、サイズが異なる配列を動的に割り当てることができます。
C にはクラスがないため、これは C++ でのみ使用できます。ここでの初期化リスト構文には 2011 C++ 標準をサポートするコンパイラが必要であることに注意してください。コンパイラがサポートしている可能性は非常に高いですが、注意が必要です。
例:
C++
// C++ program to demonstrate> // array of strings using> // vector class> #include> #include> #include> // Driver code> int> main()> {> > // Declaring Vector of String type> > // Values can be added here using> > // initializer-list> > // syntax> > std::vector colour{> 'Blue'> ,> 'Red'> ,> > 'Orange'> };> > // Strings can be added at any time> > // with push_back> > colour.push_back(> 'Yellow'> );> > // Print Strings stored in Vector> > for> (> int> i = 0; i std::cout < < colour[i] < < '
'; }> |
出力
Blue Red Orange Yellow
説明:
- ベクトルは動的配列であり、いつでも項目を追加および削除できます。
- ベクターでは任意の型またはクラスを使用できますが、特定のベクターは 1 つの型のみを保持できます。
5. 配列クラスの使用
配列は、メモリ空間に連続的に格納されるデータの同種混合です。 STL コンテナ配列を使用して、固定サイズの配列を割り当てることができます。ベクトルと非常によく似た方法で使用できますが、サイズは常に固定されます。
例:
C++
// C++ program to demonstrate> // array of string using STL array> #include> #include> #include> // Driver code> int> main()> {> > // Initialize array> > std::array colour{> 'Blue'> ,> 'Red'> ,> > 'Orange'> ,> 'Yellow'> };> > // Printing Strings stored in array> > for> (> int> i = 0; i <4; i++)> > std::cout < < colour[i] < <> '
'> ;> > return> 0;> }> |
出力
Blue Red Orange Yellow
文字列のコレクションを作成する方法はこれらだけではありません。 C++ はいくつかのコンテナ クラスを提供しており、それぞれにさまざまなトレードオフと機能があり、それらはすべてプロジェクトでの要件を満たすために存在します。探検して楽しんでください!
結論: すべてのメソッドの中で、C++ で文字列の配列を作成するには Vector が最適な方法のようです。
s.