C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++でstd::stringとint(整数)を連結する方法【stringstream・std::to_string】

C++では、文字列(std::string)と整数型(int)のデータをそのまま連結することはできません。連結を行うには、まず整数を文字列に変換する必要があります。本記事では、stringstreamを使った変換方法を中心に、具体的な手順とサンプルコードをわかりやすく解説します。

例えば、文字列「str」と数値「10」を連結すると、結果として「str10」という一つの文字列が得られます。

入力:文字列 "str" と 数値 10
出力:連結された文字列 "str10"

処理の流れ(アルゴリズム)

ステップ1:文字列と数値を受け取る
ステップ2:数値を文字列に変換する
ステップ3:両者を連結する
ステップ4:終了

stringstreamを使ったサンプルコード

stringstreamは、数値や文字列を受け取ってそれを文字列化する機能を持つクラスです。以下のコードでは、int_to_str関数の中でstringstreamを使い、整数をstd::stringに変換してから元の文字列と連結しています。

#include <iostream>
#include <sstream>
using namespace std;

string int_to_str(int x) {
    stringstream ss;
    ss << x;
    return ss.str();
}

int main() {
    string my_str = "This is a string: ";
    int x = 50;
    string concat_str;
    concat_str = my_str + int_to_str(x);
    cout << concat_str;
}

実行結果

This is a string: 50

補足:C++11以降ならstd::to_stringが便利

C++11以降の環境では、<string>ヘッダーに用意されているstd::to_string関数を使うことで、より簡潔に整数を文字列へ変換できます。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string my_str = "This is a string: ";
    int x = 50;
    cout << my_str + to_string(x);
}

このように、stringstreamとstd::to_stringのどちらを使っても同じ結果が得られます。単純な変換であればstd::to_stringの方がコードが短く済みますが、桁数指定や書式整形など細かい制御が必要な場合にはstringstreamが便利です。用途に応じて使い分けるとよいでしょう。

  1. C++でCSVファイルを読み込み・解析する2つの方法を解説

    C++でCSVファイルを解析する場合、自分でファイルを読み込んで処理するよりも、ライブラリを利用することを強くおすすめします。CSVは一見単純な形式に見えますが、引用符で囲まれたカンマやエスケープ処理など、考慮すべきケースが数多く存在します。自前で実装すると、こうしたエッジケースを見落としてしまう可能性が高くなります。 C++向けのBoostライブラリには、CSVファイルを読み込むための便利なツールセットが用意されています。 Boost.Tokenizerを使った解析方法 以下は、Boostのtokenizerとescaped_list_separatorを使用して、1行のCSVデータを解析す

  2. Pythonで文字列(str)と数値(int)を連結する方法をわかりやすく解説

    Pythonでは、文字列(str型)と数値(int型)をそのまま + 演算子で連結することはできません。異なる型同士の連結はエラーになるため、数値をあらかじめ文字列に変換(キャスト)しておく必要があります。str()関数を使った基本的な連結方法最も一般的な方法は、str() 関数を使って数値を文字列に変換してから連結するやり方です。>>> a = string >>> b = 1 >>> print(a + str(b)) string1このように、str(b) によって整数 1 が文字列 1 に変換されるため、文字列同士の連結として正しく