たぶん週刊「今週の進捗」

1週間に勉強したことや実装したことをネタに、週に1回(主に土日に)更新していく予定です。「多分」なので、臨時休刊があってもご海容ください。

文字列を数値に変換したい

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

ここを参考に。(パッチをあてた後)


変わらなかった。