1. ホーム
  2. c++

[解決済み] std::lexical_cast - そんなものあるのか?

2022-02-17 14:23:40

質問

C++標準ライブラリはこの関数を定義していますか、それともBoostに頼らねばなりませんか?

Webで検索してもBoost以外見つからなかったのですが、ここで聞いた方がいいかと思い質問させていただきました。

どのように解決するのですか?

一部だけです。

C++11 <string> があります。 std::to_string は組み込み型用です。

[n3290: 21.5/7]:

string to_string(int val);
string to_string(unsigned val);
string to_string(long val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);

を返します。 各関数は string オブジェクトを保持します。 引数の値を文字で表現したものです。 を呼び出すと生成されます。 sprintf(buf, fmt, val) を、フォーマット の指定子は "%d" , "%u" , "%ld" , "%lu" , "%lld" , "%llu" , "%f" , "%f" または "%Lf" は、それぞれ buf が指定されます。 十分な大きさの内部文字バッファ。

また、その逆の次のようなものもあります。

[n3290: 21.5/1, 21.5/4]:

int stoi(const string& str, size_t *idx = 0, int base = 10);
long stol(const string& str, size_t *idx = 0, int base = 10);
unsigned long stoul(const string& str, size_t *idx = 0, int base = 10);
long long stoll(const string& str, size_t *idx = 0, int base = 10);
unsigned long long stoull(const string& str, size_t *idx = 0, int base = 10);
float stof(const string& str, size_t *idx = 0);
double stod(const string& str, size_t *idx = 0);
long double stold(const string& str, size_t *idx = 0);

しかし、汎用的に使えるものがない(少なくとも TR2までない C++03には全くありません。