文字列を数値に変換したい
C++で、文字列で表された数値を、整数型に直すときはどうするか。
stoi()を使えば事足りる。
int main() { // your code goes here string stri = "-123", strd = "0.555"; int numi = stoi(stri); double numd = stod(strd); cout << numi*2 << endl; cout << numd*2.0f << endl; }
何故かできない
まぁこんだけならわざわざエントリとして書くこともないんですが、
g++でコンパイルしてみようとすると、どういうわけができない(バージョンは4.8.1)。
error: 'stoi' was not declared in this scope
じゃあどうするのか
考えられる方針としては。
- stoi()を使えるようにする
- stoi()を使わない方法を考える(自分で関数を定義するのは面倒なのでしない)
- あるのか?
とりあえずテストとしてコードを書いてみた。
// stoiTest.cpp #include#include using namespace std; int main() { string test = "-100"; int myint = stoi(test); cout << myint << endl; }
stoi()を使えるようにする場合
-stdオプション
http://stackoverflow.com/questions/15468233/problems-with-stdstoi-in-c-using-ubuntu
ここを参考に。(パッチをあてた後)