秋田大学ICPC対策室@wiki

stringの使い方

最終更新:

akitaicpc

- view
メンバー限定 登録/ログイン

stringの使い方

string はSTLではありませんが、非常によく使うので覚えておきましょう。文字列を取り扱うときはC言語ではcharの配列を使うしかありませんでしたが, C++ではstringを使うのが便利です。
C言語の文字列(char配列)と同じように添字を指定して特定の文字を取得することができます。+演算子で文字列の連結ができ, 辞書順比較も比較演算子でできるので便利です。

stringの宣言

std::string s;
string s: // using namespace std; を書いているとき

コンストラクタ

string s();
string s( size_type size , char c); // 長さ size の文字列を宣言し, 各文字をcで初期化する.

よく使うメンバ関数

// string s; とします.

// 文字列の長さを返す. (戻り値:size_type)
s.size();

// 要素をすべて削除する. (戻り値:void)
s.clear();

// 要素数が 0 のときは true を, そうでないときは false を返す. (戻り値:bool)
s.empty();

// 文字 c を s の末尾に追加する. (戻り値:void)
s.push_back( char c );

// 末尾の文字を削除する. (戻り値:void)
s.pop_back();

// 位置 pos の直前の位置に文字列 str を挿入し, 挿入した後の文字列への参照を返す. (戻り値:basic_string&)
s.insert( size_type pos , const string& str );

// 位置 pos から num 文字削除する. num を省略すると位置 pos から最後までの文字を削除する. (戻り値:basic_string&)
s.erase( size_type pos , size_type num = nops );

// 位置 pos 以降から文字列 strを検索し, 最初に見つかった位置を返す. (戻り値:size_type)
s.find( const string& str , size_type pos ) const;

// 位置 pos から num 文字を文字列 str で置換する. (戻り値:basic_string&)
s.replace( size_type pos , size_type num , const string& str );

// 位置 pos から num 文字の部分文字列を返す. ただし文字列 s の値は変更されない. (戻り値:basic_string)
s.substr( size_type pos = 0 , size_type num = npos ) const ;

// C言語文字列の先頭ポインタを返す. (戻り値:const char*)
s.c_str();

// s の先頭を指すイテレータを返す. (戻り値:iterator)
s.begin();

// s の末尾を指すイテレータを返す. (戻り値:iterator)
s.end();

その他

// 文字列の要素をすべて走査する
for(int i=0 ; i < s.size() ; i++ ){
    s[i]; // s[i] は char 
}

// 文字列 s の 文字列 before をすべて文字列 after に置き換える.
void f(string& s, const string& before, const string& after ){
	int pos = 0;
	while( (pos = s.find( before )) != string::npos ){
		s.replace( pos , before.size() , after );
	}
}



















...
目安箱バナー