目次
はじめに
C++で、計算結果の数値と、説明の文字列を連結して一つのメッセージを作成したい、という場面は頻繁にあります。C++では、std::string
オブジェクトと数値を +
で直接連結することはできません。
この問題を解決するために、C++11では <string>
ヘッダーに std::to_string
という便利な関数が導入されました。この関数は、int
やdouble
といった様々な数値型の値を、簡単にstd::string
オブジェクトに変換してくれます。
【前提】C++11とは?
C++11は、2011年に正式化されたC++言語のメジャーアップデート版です。std::to_string
はこのC++11で導入されたため、利用するにはC++11以降に対応したコンパイラが必要です。
to_string
を使ったサンプルコード
このコードは、整数と浮動小数点数をそれぞれ to_string
を使って文字列に変換し、他の文字列と連結して表示します。
完成コード
#include <iostream>
#include <string> // to_string を使うために必要
using namespace std;
int main() {
// 1. 整数を文字列に変換
int score = 95;
string score_str = to_string(score);
string message1 = "あなたの点数は " + score_str + " 点です。";
cout << message1 << endl;
// 2. 浮動小数点数を文字列に変換
double pi = 3.14159;
string pi_str = to_string(pi);
string message2 = "円周率の値は " + pi_str + " です。";
cout << message2 << endl;
return 0;
}
実行結果
あなたの点数は 95 点です。
円周率の値は 3.141590 です。
コードの解説
std::to_string(数値)
- 機能: 引数として渡された数値(
int
,long
,double
,float
など)を、std::string
オブジェクトに変換して返します。 - ヘッダー:
<string>
をインクルードする必要があります。 - 浮動小数点数の精度:
double
型などを変換した場合、小数点以下6桁程度で表現されます。より詳細な書式(桁数など)を指定したい場合は、std::ostringstream
やstd::format
(C++20) を使う必要があります。
まとめ
今回は、C++11の std::to_string
を使って、数値を簡単に文字列に変換する方法を解説しました。
<string>
ヘッダーをインクルードする。to_string(数値)
の形で呼び出す。
複雑な書式指定が不要な、基本的な数値から文字列への変換では、to_string
を使うのが最も手軽で分かりやすい方法です。