stringってなーに?
stringクラスは、文字列を格納する為のクラスである。
C言語の文字列と比べ、かなり楽に扱う事が出来る。
stringクラスにはstd::stringとstd::wstringがあり、std::wstringはワイド文字列に対応している。
メンバ
#include
間違って
メンバ名 | 戻り値 | 引数 | 機能 |
---|---|---|---|
string(コンストラクタ) | - | 文字列 | 文字列を格納する。 |
empty | 真 要素なし 偽 要素あり |
- | 文字列が格納されていない(""、あるいはL"")の時、真を返す。 |
size length |
文字数 | - | 格納されている文字列の文字数を返す。 |
resize | - | 文字数, 埋める文字 | 文字数を拡張、または縮小する。拡張した場合、第二引数の文字で拡張部分を埋める。 |
erase | std::string | 要素位置,要素位置からの削除文字数 | 引数で指定した位置から文字を削除する。 存在しない要素を選んだりした場合の動作は不明。 |
substr | basic_string | 要素位置,文字数 | 要素位置+文字数の範囲を返す。 |
max_size | 最大文字数 | - | 格納できる最大文字数。 |
c_str | 文字列の先頭ポインタ | - | C言語のように、文字列の先頭ポインタを返す。文字列の末尾には'\0'が入る。 読み取り専用の為、ポインタを得て書き換えた時の動作は保障されない。 |
data | 文字列の先頭ポインタ | - | c_str同様、格納された文字列の先頭ポインタを返す。 ただし、末尾は内部で確保されたメモリ領域の末尾である為、'\0'では終わらない可能性がある。 読み取り専用の為、書き換えてはいけない。 |
copy | コピーした文字数 | 領域を確保されたchar*,文字数,要素位置 | char*型に文字列をコピーする。'\0'は付加されない模様。 |
clear | - | - | 文字列を空にする。 |
replace | std::string | 要素位置,文字数 stringクラス,要素位置,置き換え文字数 |
引数で指定された位置+文字数の範囲を、別のstringに格納されている文字列の位置+文字数に置き換える。 |
replace | std::string | 要素位置,文字数 char*型の文字列,文字数 |
引数で指定された位置+文字数の範囲を、char*型の先頭+文字数に置き換える。 char*の文字数を省略した場合、char*の文字列に置き換わる。 |
replace | std::string | 要素位置,文字数1,文字数2,char | 指定された位置+文字数1の範囲を、char型の文字*文字数2に置き換える。 |
compare | 真 全要素が合わない 偽 全要素が合う |
std::string | 文字列を比較する。 |
find | 要素位置 | 検索文字列 | 格納した文字列を前方から探索し、引数の文字列が最初に現れる位置を返す。 位置は1文字目を0からとする。 引数に指定された文字列がなかった場合、std::string::nposを返す。 |
rfind | 要素位置 | 検索文字列 | findの後方探索バージョン。 |
find_first_of | 要素位置 | 検索文字列 | 格納した文字列を前方から探索し、引数の文字のどれかが最初に現れる位置を返す。 位置は1文字目を0からとする。 引数に指定された文字列がなかった場合、std::string::nposを返す。 |
rfind_last_of | 要素位置 | 検索文字列 | find_first_ofの後方探索バージョン。 |
find_first_not_of | 要素位置 | 検索文字列 | 格納した文字列を前方から探索し、引数の文字のどれともマッチしない要素位置を返す。 位置は1文字目を0からとする。 引数に指定された文字列がなかった場合、std::string::nposを返す。 |
rfind_last_not_of | 要素位置 | 検索文字列 | find_first_not_ofの後方探索バージョン。 |
begin(イテレータ) | イテレータ | - | イテレータに代入する時に使用する。 |
end(イテレータ) | イテレータの末尾要素の一つ後ろを指す。 | - | イテレータの末尾要素の一つ後ろを指す。 一つ後ろを指すのは、ループ時に!=で指定しやすい為 |
rbegin(イテレータ) | イテレータ | - | beginの後方探索バージョン。 |
rend(イテレータ) | イテレータ | - | endの後方探索バージョン。 |
演算子オーバーロード
演算子名 | 戻り値 | 機能 |
---|---|---|
[ ] | 要素の文字 | 普通の配列と同じように参照・代入が行える。ただし、存在しない要素を選ぶと異常動作を起こす可能性がある。 |
= | std::string | 文字列を代入する。charやchar*も代入できる。 |
= = | 真 true 偽 false |
文字列の比較。左右両方の文字列が同じだった場合、真。char*との比較も可能。 |
!= | 真 true 偽 false |
文字列の比較。左右両方の文字列が違うものだった場合、真。char*との比較も可能。 |
+ | std::string | 文字列連結。charやchar*も連結可能。 |
+= | std::string | 左辺値の文字列と右辺値の文字列を連結する。charやchar*も連結可能。 |
> | ? | ? |
? | ? | |
>= | ? | ? |
<= | ? | ? |
変数型
型名 | 機能 |
---|---|
std::string::npos | 検索関連のメンバを使用した時、マッチする文字列がなかった場合に返ってくる定数。 |
std::string::size_type | 検索関係のメンバの引数、戻り値として使う型。ほぼint型と同じ感覚で使う。 |