◐ Shell
clean mode source ↗

std::to_string - cppreference.com

提供: cppreference.com

<tbody> </tbody>

ヘッダ <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) が生成するのと同じ内容を持つ文字列に変換します。

引数

戻り値

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

例外

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

関連項目