Open2
また C++ であれこれ唸っている私へ
ピン留めされたアイテム
もくじ
文字列から整数・実数に変換する
文字列(std::string
や std::wstring
)から整数・実数に変換するためには <string> を include することで利用可能になる std::sto*
関数群を使います。 C でいうところの strto*
関数群です。 内部では実際にそれらが呼ばれているようですね。
-
std::stod
: 文字列から double へ -
std::stof
: 文字列から float へ -
std::stoi
: 文字列から int へ -
std::stol
: 文字列から long へ -
std::stold
: 文字列から long double へ -
std::stoll
: 文字列から long long へ -
std::stoul
: 文字列から unsigned long へ -
std::stoull
: 文字列から unsigned long long へ
上に挙げた関数の全ては、第 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);