stringクラスとは
C言語では文字列を扱う際、文字型の配列として定義しました。
C++ではこの方法も使えますが、もっと便利な仕組みを持っています。
それがstring型です。
この機能ではstringクラスのオブジェクトとして文字列を保管します。
その為、文字列の扱いに便利なメンバ関数を持っています。
また、サイズを自動的に変更してくれるのでメモリ容量内であればいくらでも文字列を後から拡張できます。
stringクラスの使い方
stringを使うには<string>をインクルードする必要があります。
#include <string>
また、std::を使うのでusing namespaceでstdを指定しておくと良いでしょう。
using namespace std;
以降、std::を省略して解説します。
stringオブジェクトの生成、初期化は普通の変数と同様にできます。
string str;
str = "Hello, world";
引数をとることで定義の際に初期化出来ます。
string str("Hello, world");
出力も変数と同様に指定するだけです。
cout << str << endl;
簡単ですね。
メンバ関数
stringクラスがサポートする文字列に関する関数をいくつか紹介します。
関数 | 意味 |
---|---|
length() | 文字列の長さを返す |
begin() | 文字列の先頭のイテレータを返す |
end() | 文字列の最後尾のイテレータを返す |
find() | 指定した文字列を検索する |
empty() | 文字列が空ならtrue、空でなければfalseを返す |
演算
最後にstring型の演算について解説します。
配列を使った文字列の表現方法では、比較や連結をするのに関数を用いていました。
これは配列が演算をサポートしていない為です。
ところが、string型のオブジェクトは演算子を使った演算をサポートしています。
ここでは連結と比較を紹介します。
string_sample.cpp
string str1, str2, str3;
str1 = "Hello";
str2 = str1 + ", world.";
str1 += str2;
str3 = str1 + str2;
このように代入、加算演算子で連結することができます。
続いて比較です。
こちらも変数と同様に比較演算子で比較することができます。
str1 == str2
str1 == "Hello"
string型のオブジェクト同士だけでなく文字列リテラルとの比較も可能です。
文字列操作関数と比べて格段にわかり易くなっていることがわかるでしょう。
過去に書いた文字列を使ったソースコードをstringに書き換えてみてはどうでしょう。