導入
第5章では文字列を char の配列(C文字列)で扱いました。サイズを自分で決め、終端の \0 に気をつける必要がありました。モダンな C++ では、もっと安全で便利な std::string を使います。
説明
<string> を include すると string 型が使えます。長さの心配なく代入・連結でき、+ でそのままつなげます。== で内容を比較できるのも大きな利点です。
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Become";
name = name + "Coder"; // + で連結(配列サイズの心配が不要)
name += "!"; // += で末尾に追加
cout << name << endl; // BecomeCoder!
if (name == "BecomeCoder!") { // == で内容を比較できる
cout << "一致" << endl;
}
return 0;
}
C文字列(char 配列)と std::string の違いを図にすると、次のイメージです。
flowchart TB
subgraph OLD["char 配列(C文字列)"]
o["サイズを自分で決める<br/>末尾の終端記号 0 に注意<br/>連結は strcat・比較は strcmp"]
end
subgraph NEW["std::string(モダン)"]
n["長さは自動管理<br/>+ で連結・== で比較<br/>.length や .substr が使える"]
end
OLD -->|"より安全・便利に"| NEW
string は「長さ」を自分の中に持っているので、いつでも .length()(または .size())で取り出せます。空かどうかは .empty() で分かります。
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "Hello";
cout << s.length() << endl; // 5
cout << s.empty() << endl; // 0(空でない → false)
string t; // 空文字列
cout << t.empty() << endl; // 1(空 → true)
return 0;
}
まとめ
新しく C++ を書くときは、特別な理由がなければ C文字列ではなく std::string を使います。安全で読みやすく、間違いが減ります。次のレッスンでは文字列を「操作する」メソッドを見ていきます。