名前空間
変種
操作

std::to_string

提供: cppreference.com
< cpp‎ | string‎ | basic string
2019年12月13日 (金) 03:20時点におけるMilkpot (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
 
 
 
std::basic_string
 
ヘッダ <string> で定義
std::string to_string( int value );
(1) (C++11以上)
std::string to_string( long value );
(2) (C++11以上)
std::string to_string( long long value );
(3) (C++11以上)
std::string to_string( unsigned value );
(4) (C++11以上)
std::string to_string( unsigned long value );
(5) (C++11以上)
std::string to_string( unsigned long long value );
(6) (C++11以上)
std::string to_string( float value );
(7) (C++11以上)
std::string to_string( double value );
(8) (C++11以上)
std::string to_string( long double value );
(9) (C++11以上)

数値を std::string に変換します。

1) 符号付き整数を、十分大きな buf に対して std::sprintf(buf, "%d", value) が生成するのと同じ内容を持つ文字列に変換します。
2) 符号付き整数を、十分大きな buf に対して std::sprintf(buf, "%ld", value) が生成するのと同じ内容を持つ文字列に変換します。
3) 符号付き整数を、十分大きな buf に対して std::sprintf(buf, "%lld", value) が生成するのと同じ内容を持つ文字列に変換します。
4) 符号なし整数を、十分大きな buf に対して std::sprintf(buf, "%u", value) が生成するのと同じ内容を持つ文字列に変換します。
5) 符号なし整数を、十分大きな buf に対して std::sprintf(buf, "%lu", value) が生成するのと同じ内容を持つ文字列に変換します。
6) 符号なし整数を、十分大きな buf に対して std::sprintf(buf, "%llu", value) が生成するのと同じ内容を持つ文字列に変換します。
7,8) 浮動小数点値を、十分大きな buf に対して std::sprintf(buf, "%f", value) が生成するのと同じ内容を持つ文字列に変換します。
9) 浮動小数点値を、十分大きな buf に対して std::sprintf(buf, "%Lf", value) が生成するのと同じ内容を持つ文字列に変換します。

目次

[編集] 引数

value - 変換する数値

[編集] 戻り値

変換された値を保持する文字列。

[編集] 例外

std::string のコンストラクタから std::bad_alloc が投げられるかもしれません。

[編集] ノート

  • 浮動小数点型の場合、std::to_string は有効桁数がゼロであるような予期しない結果を生成するかもしれません。 例を参照してください。
  • 戻り値は std::cout がデフォルトで表示する内容と大きく異なるかもしれません。 例を参照してください。
  • std::to_string は書式化目的のために現在のロケールを頼ります。 そのため複数のスレッドからの std::to_string の並行的な呼び出しは、呼び出しを部分的に直列化するかもしれません。 C++17 では、より高性能なロケールに依存しない代替品として std::to_chars が提供されます。

[編集]

#include <iostream>
#include <string>
 
int main() 
{
    double f = 23.43;
    double f2 = 1e-9;
    double f3 = 1e40;
    double f4 = 1e-40;
    double f5 = 123456789;
    std::string f_str = std::to_string(f);
    std::string f_str2 = std::to_string(f2); // Note: returns "0.000000"
    std::string f_str3 = std::to_string(f3); // Note: Does not return "1e+40".
    std::string f_str4 = std::to_string(f4); // Note: returns "0.000000"
    std::string f_str5 = std::to_string(f5);
    std::cout << "std::cout: " << f << '\n'
              << "to_string: " << f_str  << "\n\n"
              << "std::cout: " << f2 << '\n'
              << "to_string: " << f_str2 << "\n\n"
              << "std::cout: " << f3 << '\n'
              << "to_string: " << f_str3 << "\n\n"
              << "std::cout: " << f4 << '\n'
              << "to_string: " << f_str4 << "\n\n"
              << "std::cout: " << f5 << '\n'
              << "to_string: " << f_str5 << '\n';
}

出力:

std::cout: 23.43
to_string: 23.430000
 
std::cout: 1e-09
to_string: 0.000000
 
std::cout: 1e+40
to_string: 10000000000000000303786028427003666890752.000000
 
std::cout: 1e-40
to_string: 0.000000
 
std::cout: 1.23457e+08
to_string: 123456789.000000

[編集] 関連項目

整数または浮動小数点値を wstring に変換します
(関数) [edit]
(C++11)(C++11)
文字列を符号なし整数に変換します
(関数) [edit]
(C++11)(C++11)(C++11)
文字列を符号付き整数に変換します
(関数) [edit]
(C++11)(C++11)(C++11)
文字列を浮動小数点値に変換します
(関数) [edit]
(C++17)
整数値または浮動小数点値を文字シーケンスに変換します
(関数) [edit]