stringまとめ

stringってなーに?

stringクラスは、文字列を格納する為のクラスである。
C言語の文字列と比べ、かなり楽に扱う事が出来る。
stringクラスにはstd::stringとstd::wstringがあり、std::wstringはワイド文字列に対応している。



メンバ

#include で使用する事が出来る。
間違ってと記述すると、C言語の標準ライブラリになるので注意する事。

メンバ名 戻り値 引数 機能
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型と同じ感覚で使う。