C++ で 2つの文字列を連結する方法
胡金庫
2023年10月12日
この記事では、C++ で 2つの文字列を連結する方法について、複数の方法を示します。
C++ で 2つの文字列を連結するには +=
演算子を使用する
後者はインプレース文字列連結に直接変換されます。この演算子は string
型変数、文字列リテラル、C スタイル文字列、文字を string
オブジェクトに連結するために使われます。以下の例は、2つの string
型変数が互いに結合され、コンソールに出力される様子を示しています。
#include <iostream>
#include <string>
using std::copy;
using std::cout;
using std::endl;
using std::string;
int main() {
string string1("Starting string ");
string string2("end of the string ");
cout << "string1: " << string1 << endl;
string1 += string2;
cout << "string1: " << string1 << endl;
return EXIT_SUCCESS;
}
出力:
string1: Starting string
string1: Starting string end of the string
あるいは、2つの string
変数をパラメータとして受け取り、連結した結果を返すカスタム関数を作成することもできます。string
は移動コンストラクタを持っているので、長い文字列を値で返すのは非常に効率的であることに注意してください。関数 concTwoStrings
は新しい string
オブジェクトを作成し、それを変数 string2
に代入します。
#include <iostream>
#include <string>
using std::copy;
using std::cout;
using std::endl;
using std::string;
string concTwoStrings(const string& s1, const string& s2) { return s1 + s2; }
int main() {
string string1("Starting string ");
string string2 = concTwoStrings(string1, " conc two strings");
cout << "string2: " << string2 << endl;
return EXIT_SUCCESS;
}
出力:
string2: Starting string conc two strings
C++ で 2つの文字列を連結するには append()
メソッドを用いる
append
は std::string
クラスの組み込みメソッドです。このメソッドは豊富な機能を提供しており、そのすべてはマニュアルページで紹介されています。この例では、リテラル文字列の値を string
オブジェクトに連結するためにこれを利用します。
#include <iostream>
#include <string>
using std::copy;
using std::cout;
using std::endl;
using std::string;
int main() {
string string("Temporary string");
string.append(" appended sequence");
cout << string << endl;
return EXIT_SUCCESS;
}
出力:
Temporary string appended sequence
append
メソッドは this
オブジェクトへのポインタを返すので、複数回の連鎖関数呼び出しと string
変数への複数回の追加を行うことができます。このメソッドは以下の構文でイニシャライザの文字リストを追加することもできます。append({ 'a', 'b', 'c', 'd'})
。
#include <iostream>
#include <string>
using std::copy;
using std::cout;
using std::endl;
using std::string;
int main() {
string string1("Starting strings");
string string2("end of the string");
string1.append(" ").append(string2).append("\n");
cout << string1;
return EXIT_SUCCESS;
}
出力:
Starting string end of the string
著者: 胡金庫