Skip to content

Commit 25162a1

Browse files
committed
to_string / to_wstring : C++26対応としてformatベースの仕様に変更 #1181
1 parent 16e6dd7 commit 25162a1

File tree

2 files changed

+94
-57
lines changed

2 files changed

+94
-57
lines changed

reference/string/to_string.md

Lines changed: 49 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,56 @@
66

77
```cpp
88
namespace 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()`ベースの仕様になった

reference/string/to_wstring.md

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,56 @@
66

77
```cpp
88
namespace std {
9-
wstring to_wstring(int val);
10-
wstring to_wstring(unsigned int val);
11-
wstring to_wstring(long val);
12-
wstring to_wstring(unsigned long val);
13-
wstring to_wstring(long long val);
14-
wstring to_wstring(unsigned long long val);
15-
wstring to_wstring(float val);
16-
wstring to_wstring(double val);
17-
wstring to_wstring(long double val);
9+
wstring to_wstring(int val); // (1) C++11
10+
wstring to_wstring(unsigned int val); // (2) C++11
11+
wstring to_wstring(long val); // (3) C++11
12+
wstring to_wstring(unsigned long val); // (4) C++11
13+
wstring to_wstring(long long val); // (5) C++11
14+
wstring to_wstring(unsigned long long val); // (6) C++11
15+
wstring to_wstring(float val); // (7) C++11
16+
wstring to_wstring(double val); // (8) C++11
17+
wstring to_wstring(long double val); // (9) C++11
1818
}
1919
```
20+
* wstring[link basic_string.md]
2021
2122
## 概要
22-
数値`val`を`wstring`型文字列に変換する。
23+
数値`val`を[`wstring`](basic_string.md)型文字列に変換する。
2324
25+
- (1) : `int`型の値を[`wstring`](basic_string.md)型に変換する
26+
- (2) : `unsigned int`型の値を[`wstring`](basic_string.md)型に変換する
27+
- (3) : `long`型の値を[`wstring`](basic_string.md)型に変換する
28+
- (4) : `unsigned long`型の値を[`wstring`](basic_string.md)型に変換する
29+
- (5) : `long long`型の値を[`wstring`](basic_string.md)型に変換する
30+
- (6) : `unsigned long long`型の値を[`wstring`](basic_string.md)型に変換する
31+
- (7) : `float`型の値を[`wstring`](basic_string.md)型に変換する
32+
- (8) : `double`型の値を[`wstring`](basic_string.md)型に変換する
33+
- (9) : `long double`型の値を[`wstring`](basic_string.md)型に変換する
2434
25-
## 戻り値
26-
各数値型に対して、`swprintf(buf, buffsize, fmt, val)`によって生成された文字列の`wstring`オブジェクトを返す。使用されるバッファサイズは未規定。
27-
28-
各型で使用されるフォーマットは以下のようになる:
2935
30-
| 型 | フォーマット |
31-
|----------------------|---------------|
32-
| `int` | `L"%d"` |
33-
| `unsigned int` | `L"%u"` |
34-
| `long` | `L"%ld"` |
35-
| `unsigned long` | `L"%lu"` |
36-
| `long long` | `L"%lld"` |
37-
| `unsigned long long` | `L"%llu"` |
38-
| `float` | `L"%f"` |
39-
| `double` | `L"%f"` |
40-
| `long double` | `L"%Lf"` |
36+
## 戻り値
37+
- C++11まで
38+
各数値型に対して、`swprintf(buf, buffsize, fmt, val)`によって生成された文字列の`wstring`オブジェクトを返す。使用されるバッファサイズは未規定。
39+
40+
各型で使用されるフォーマットは以下のようになる:
41+
42+
| 型 | フォーマット |
43+
|----------------------|---------------|
44+
| `int` | `L"%d"` |
45+
| `unsigned int` | `L"%u"` |
46+
| `long` | `L"%ld"` |
47+
| `unsigned long` | `L"%lu"` |
48+
| `long long` | `L"%lld"` |
49+
| `unsigned long long` | `L"%llu"` |
50+
| `float` | `L"%f"` |
51+
| `double` | `L"%f"` |
52+
| `long double` | `L"%Lf"` |
53+
54+
- C++26から
55+
```cpp
56+
return format(L"{}", val);
57+
```
58+
* format[link /reference/format/format.md]
4159
4260
4361
## 例
@@ -180,4 +198,5 @@ std::wstring to_wstring(long double val)
180198
181199
## 参照
182200
- [N2408 Simple Numeric Access Revision 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2408.html)
183-
201+
- [P2587R3 `to_string` or not `to_string`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2587r3.html)
202+
- C++26から`sprintf`ベースの仕様をやめて`std::format()`ベースの仕様になった

0 commit comments

Comments
 (0)