66
77``` cpp
88namespace std {
9- string to_string(int val);
10- string to_string(unsigned int val);
11- string to_string(long val);
12- string to_string(unsigned long val);
13- string to_string(long long val);
14- string to_string(unsigned long long val);
15- string to_string(float val);
16- string to_string(double val);
17- string to_string(long double val);
9+ string to_string(int val); // (1) C++11
10+ string to_string(unsigned int val); // (2) C++11
11+ string to_string(long val); // (3) C++11
12+ string to_string(unsigned long val); // (4) C++11
13+ string to_string(long long val); // (5) C++11
14+ string to_string(unsigned long long val); // (6) C++11
15+ string to_string(float val); // (7) C++11
16+ string to_string(double val); // (8) C++11
17+ string to_string(long double val); // (9) C++11
1818}
1919```
20+ * string[link basic_string.md]
2021
2122## 概要
22- 数値`val`を`string`型文字列に変換する。
23+ 数値`val`を[ `string`](basic_string.md) 型文字列に変換する。
2324
25+ - (1) : `int`型の値を[`string`](basic_string.md)型に変換する
26+ - (2) : `unsigned int`型の値を[`string`](basic_string.md)型に変換する
27+ - (3) : `long`型の値を[`string`](basic_string.md)型に変換する
28+ - (4) : `unsigned long`型の値を[`string`](basic_string.md)型に変換する
29+ - (5) : `long long`型の値を[`string`](basic_string.md)型に変換する
30+ - (6) : `unsigned long long`型の値を[`string`](basic_string.md)型に変換する
31+ - (7) : `float`型の値を[`string`](basic_string.md)型に変換する
32+ - (8) : `double`型の値を[`string`](basic_string.md)型に変換する
33+ - (9) : `long double`型の値を[`string`](basic_string.md)型に変換する
2434
25- ## 戻り値
26- 各数値型に対して、`sprintf(buf, fmt, val)`によって生成された文字列の`string`オブジェクトを返す。使用されるバッファサイズは未規定。
27-
28- 各型で使用されるフォーマットは以下のようになる:
2935
30- | 型 | フォーマット |
31- |----------------------|--------------|
32- | `int` | `"%d"` |
33- | `unsigned int` | `"%u"` |
34- | `long` | `"%ld"` |
35- | `unsigned long` | `"%lu"` |
36- | `long long` | `"%lld"` |
37- | `unsigned long long` | `"%llu"` |
38- | `float` | `"%f"` |
39- | `double` | `"%f"` |
40- | `long double` | `"%Lf"` |
36+ ## 戻り値
37+ - C++11まで
38+ 各数値型に対して、`sprintf(buf, fmt, val)`によって生成された文字列の`string`オブジェクトを返す。使用されるバッファサイズは未規定。
39+
40+ 各型で使用されるフォーマットは以下のようになる:
41+
42+ | 型 | フォーマット |
43+ |----------------------|--------------|
44+ | `int` | `"%d"` |
45+ | `unsigned int` | `"%u"` |
46+ | `long` | `"%ld"` |
47+ | `unsigned long` | `"%lu"` |
48+ | `long long` | `"%lld"` |
49+ | `unsigned long long` | `"%llu"` |
50+ | `float` | `"%f"` |
51+ | `double` | `"%f"` |
52+ | `long double` | `"%Lf"` |
53+
54+ - C++26から
55+ ```cpp
56+ return format("{}", val);
57+ ```
58+ * format[link /reference/format/format.md]
4159
4260
4361## 例
@@ -155,10 +173,10 @@ std::string to_string(long double val)
155173- [GCC](/implementation.md#gcc): 4.5.4
156174- [ICC](/implementation.md#icc): ?
157175- [Visual C++](/implementation.md#visual_cpp): 2010, 2012, 2013, 2015, 2017
158- - 2010は、不完全な実装。以下の型のみ多重定義されている。
159- - `long long`
160- - `unsigned long long`
161- - `long double`
176+ - 2010は、不完全な実装。以下の型のみ多重定義されている。
177+ - `long long`
178+ - `unsigned long long`
179+ - `long double`
162180
163181
164182## 関連項目
@@ -171,5 +189,5 @@ std::string to_string(long double val)
171189
172190## 参照
173191- [N2408 Simple Numeric Access Revision 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2408.html)
174-
175-
192+ - [P2587R3 `to_string` or not `to_string`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2587r3.html)
193+ - C++26から`sprintf`ベースの仕様をやめて`std::format()`ベースの仕様になった
0 commit comments