Open2

また C++ であれこれ唸っている私へ

KusaReMKNKusaReMKN

文字列から整数・実数に変換する

文字列(std::stringstd::wstring)から整数・実数に変換するためには <string> を include することで利用可能になる std::sto* 関数群を使います。 C でいうところの strto* 関数群です。 内部では実際にそれらが呼ばれているようですね。

上に挙げた関数の全ては、第 1 引数に変換する対象である文字列への参照を取ります。 省略可能な第 2 引数には std::size_t へのポインタを渡します。 このポインタの指す領域には、変換に使用されなかった要素のインデクスが格納されます。 デフォルトでは nullptr が指定されています。 整数に変換する関数には、省略可能な第 3 引数に基数を指定できます。 有効な値は 0 と 2 から 36(両端含む)です。0 を指定された場合には、プレフィクスから 8 進数と 16 進数が自動的に選択されます。 デフォルトでは 10 が指定されています。

std::string s1("3.14");
std::srting s2("6.02214076e23");
std::string s3("0xCAFE");
std::string s4("0120");
std::string s5("57AR");

std::size_t idx;

auto pi = std::stod(s1);
auto na = std::stod(s2);
auto cafe = std::stol(s3, nullptr, 0);
auto dec = std::stol(s4);
auto oct = std::stol(s4, nullptr, 0);
auto st = std::stol(s5, &idx);