[C++/STL] std::stringクラスの使い方

※本ブログでは、商品・サービスのリンク先にプロモーションを含みます。

スポンサーリンク

std::stringはC++標準ライブラリ(STL)の文字列クラスです。char型の配列を使うよりとっても便利になりました。メモリのalloc/freeを自動でやってくれます。

ここでは、よく使う機能に絞って説明します。より詳しく知りたい人はcpprefjpで勉強することをお勧めします。

C++のおすすめの書籍を紹介します。

◆初学者向けの入門書

C++の機能をわかりやすく、丁寧に解説している良書です。

created by Rinker
¥4,180 (2024/02/27 20:09:11時点 楽天市場調べ-詳細)

◆中級者向けの書籍

C++の開発者が書いた本なので、C++11までの仕様が網羅的に書かれています。

◆上級者向けの書籍

C++を効率的かつ正確に使用するための最適解とガイドラインを示してくれる良書です。
各章は、特定のテクニックやアプローチに関する詳細な説明と例を含んでおり、プログラマがより良いコードを書くために一役買ってくれます。

スポンサーリンク

インクルードヘッダ

stringヘッダをインクルードすると使えるようになります。

#include <string>

宣言

stringクラスはstd名前空間で定義されているのでstd::stringと宣言する必要があります。次の2つの方法でstd::を省略して書くことができます。

using namespace std;	// ヘッダやファイルの先頭にこれを書くのはあまりお行儀がよくない。std配下の全てのクラスを使用すると言っているようなもの。
using std::string;		// 使用するクラスを限定するために、なるべくこちらを使用しましょう。

以降のサンプルコードはincludeとusing宣言をしたものとします。

初期化

char[]と同じように宣言時の代入で書くことができます。引数にも初期値を書けます。

使用例:

int main(void)
{
	string str1 = "コッコ隊長の";
	string str2("勉強部屋");

	cout << str1 << str2 << endl;
	
	return 0;
}

実行結果:

コッコ隊長の勉強部屋

文字列のコピー

代入演算子でコピーできます。

使用例:

int main(void)
{
	string str1 = "コッコ隊長の勉強部屋";
	string str2;

	str2 = str1;

	cout << str2 << endl;
	
	return 0;
}

実行結果:

コッコ隊長の勉強部屋

文字列のクリア(clear)

メンバ関数”clear”を使ってクリアできます。

使用例:

int main(void)
{
	string str1 = "コッコ隊長の勉強部屋";

	str1.clear();

	cout << str1 << endl;

	return 0;
}

実行結果:

文字列が一致しているかどうか

比較演算子”==”または”!=”で一致しているかどうかを判定できます。

使用例:

int main(void)
{
	string str1 = "コッコ隊長";
	string str2 = "コッコ隊長";

	if(str1 == str2){
		cout << "str1とstr2は一致しているよ" << endl;
	}else{
		cout << "str1とstr2は不一致だよ" << endl;
	}

	if(str1 != "コッコ隊副隊長"){
		cout << "str1はコッコ隊副隊長じゃないよ" << endl;
	}else{
		cout << "str1はコッコ隊副隊長だよ" << endl;
	}
	
	return 0;
}

実行結果:

str1とstr2は一致しているよ
str1はコッコ隊副隊長じゃないよ

文字列が空(カラ)かどうか(empty)

メンバ関数”empty”でカラかどうかを判定できます。戻り値はbool。trueのときがカラ。

使用例: