C言語の文字列はchar型の配列であり、最後の文字の次の要素に「'\0'(ヌル文字)」が入っていました。
慣れれば色々な処理が出来るのですが、非常に使いづらい点もあります。
<sample program cpp005-01>
#include <iostream> static const int MAX_STRING = 10; int main() { char str[MAX_STRING]; std::cin >> str; std::cout << "str = " << str << std::endl; return 0; } |
C言語の時にも説明しましたが、char型配列の要素数を超えて入力すると予期しないバグが発生します。
もちろん「cin」にも要素数を超えさせない方法が用意されていますが、問題はそこではありません。
毎回「何文字分の要素を準備すれば良いか考えなければならない」という点です。
配列の要素数を固定しなければならない場面は数多くあります。
メモリやディスクには容量があり、無制限にデータを保存する事は出来ませんからね。
しかし、プログラムを組んでいく上で一時的に使用する文字列など、上限を設定しづらい状況もあります。
また、文字列操作についても「strcpy」「strcat」などの関数を使用する必要がありました。
要素数を超えてコピー出来たりしますから、対応も考えなければなりません。
まずは、stringを使ったサンプルを書きましょう。
<sample program cpp005-01>
#include <iostream> #include <string> int main() { std::string str; std::cin >> str; std::cout << "str = " << str << std::endl; return 0; } |
<実行結果>
abcdefghijklmnopqrstuvwxyz str = abcdefghijklmnopqrstuvwxyz 続行するには何かキーを押してください・・・
stringを使うには「string」をインクルードする必要があります。
stringも「名前空間std」に所属しています。
最大文字数はどこにも記載していませんよね。
通常の変数と同じように「cin」で入力、「cout」で出力出来ます。
C言語の文字列では出来なかった事も色々出来るようになっていますので、次で説明しましょう。