string クラスには基本的な演算に加え、便利な演算(関数)が定義されており、文字列に対して様々な操作を行うことができます。文字列に対して演算を行うためには、変数名の後に.(ドット)を書きその後に引数とともに関数を記述します。次の表はstring クラスで使用できる関数の例です。
関数 | 処理の内容 |
---|---|
size() | 文字数を返す |
insert() | (指定した場所に)文字・文字列を挿入する |
erase() | (指定した場所の)文字・文字列を削除する |
clear() | すべての文字を削除する |
find() | 指定した文字列を探す |
substr() | 文字列の(指定した)部分文字列を返す |
replace() | (指定した)部分文字列を新しい文字列に置換する |
string クラスには連結のための演算子が定義されており、 +、+= 演算子を用いて2つの文字列または文字列と文字を連結することができます。+ 演算子はオペランドを連結して新しい文字列を生成して返します。
次のプログラムは、入力された文字列に新たな文字列・文字を追加するプログラムです。
#include<iostream> #include<string> using namespace std; int main(){ string name; cin >> name; name = "Mt. " + name; name += '.'; cout << name << endl; }
このプログラムに "Bandai" と入力すれば"Mt. Bandai"と出力されます。
次のプログラムでは、insert関数を用いて、文字列に、指定された文字列を挿入しています。
#include<iostream> using namespace std; int main(){ string nation, zip, address; address = ""; cin >> nation >> zip; address = zip + nation; address.insert(zip.size(), ", "); cout << address << endl; return 0; }
たとえば、上プログラムにJapan 123-4567を入力すると、123-4567, Japanが出力されます。
次のプログラムでは、find 関数を用いて文字列 str1 の中に文字列 str2 が含まれるかを判定しています。
string str1, str2; cin >> str1 >> str2; if ( str1.find(str2) == string::npos ) cout << "No" << endl; else cout << "Yes" << endl;
標準入力 | 標準出力 |
---|---|
aizuzia zuz | Yes |
aizuzia zuk | No |
オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。 |