文字列の関数

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

Reference

 

オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)

AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。