[C++]std::stringの使い方

C++で文字列を使用するにはSTLのstd::stringを使用します。

この記事では、std::stringの基本的な使い方を解説します。

準備

std::stringを使うためには、stringをincludeします。

C++
// std::stringを使うために必要なファイル
#include <string>

毎回std::stringと記述するのが面倒な場合には、includeの後に以下の一文を記載することでstd名前空間を省略することができるようになります。

C++
using namespace std;

以降この記事では、std名前空間は省略して全てstringで統一します。

変数宣言

string型の変数を宣言する際には、以下のように書きます。

C++
// 文字列
string text;

コンストラクタに文字列を渡すことで、変数の初期値を設定することも可能です。

C++
// 初期値「Hoge」の文字列
string text("Hoge");

文字列長の取得

文字列長を取得する場合にはlength関数を使用します。

C++
// 文字列
string text("hoge");
// 文字列長
int len = text.length();

ちなみにsize関数でも同様の結果が得られます。

演算子

string型変数はC言語の文字列と異なり、いくつかの演算子を使用することができます。

文字列の結合

文字列の結合を行う場合には+演算子を使用します。

C++
// 文字列1
string text1("hoge1");
// 文字列2
string text2("hoge2");
// 文字列の結合
string res = text1 + text2;

+演算子が使えるので当然+=演算子も使うことができます。

C++
// 文字列1
string text1("hoge1");
// 文字列2
string text2("hoge2");
// 文字列1に文字列2を結合
text1 += text2;

また、結合する文字列のうち片方がstring型であればC言語のchar*型文字列とも結合可能です。

C++
// 文字列
string text = "hoge1";
// 文字列とchar*文字列を結合
string res = text + "hoge2";

文字列の比較

文字列の比較を行う場合には==演算子を使用します。

C++
// 文字列1
string text1("hoge1");
// 文字列2
string text2("hoge2");
// 文字列が一致する場合
if(text1 == text2)
{
    // 一致する場合の処理
}

==演算子が使えるので当然!=演算子も使うことができます。

C++
// 文字列1
string text1("hoge1");
// 文字列2
string text2("hoge2");
// 文字列が一致しない場合
if(text1 != text2)
{
    // 一致しない場合の処理
}

また、比較する文字列のうち片方がstring型であればC言語のchar*型文字列とも比較可能です。

C++
// 文字列
string text("hoge1");
// 文字列が一致する場合
if(text == "hoge2")
{
    // 一致する場合の処理
}

文字列の検索

文字列の検索を行う場合にはfind関数を使用します。

C++
// 検索対象文字列
string text("hogehoge");
// 検索文字列
string find("geho");
// 検索
size_t pos = text.find(find);

find関数は検索文字列が見つかった場合には最初に見つかった位置を、見つからなかった場合にはsize_t型の最大値(-1に該当する数)を返します。

また、末尾から文字列の検索を行う場合にはrfind関数を使用します。

C++
// 検索対象文字列
string text("hogehoge");
// 検索文字列
string find("ho");
// 末尾から検索
size_t pos = text.rfind(find);

文字列の切り出し

文字列の切り出しを行う場合にはsubstr関数を使用します。

C++
// 文字列
string text("hogehoge");
// 文字列の切り出し(2文字目から4文字切り出し)
string slice = text.substr(2, 4);

切り出しの際に位置を使用するためよくfind関数と組み合わせて使われます。

数値の文字列化

数値の文字列化を行う場合にはto_string関数を使用します。

C++
// 整数値を文字列化
string textInt = std::to_string(100);
// 実数値を文字列化
string textDouble = std::to_string(1.23);

ただし、to_string関数はC++11以降でしか使えないため、それ以前のバージョンの場合にはstringstreamを使って数値の文字列化を実現することが可能です。

C++
// stringstreamを使うために必要なファイル
#include <sstream>

// 文字列化
template<class T> string toString(T v)
{
    stringstream ss;
    ss << v;
    ss.str();
}

状況に応じて使い分けてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です