stoiが使えない

概要

 C++のstringモジュールに、stringからintへの変換関数(stoi())があるのだが、なんでかわからんが使えないので調べた。

前提

 DxLibをLinuxでビルドするとか言う、若干特殊な環境である。

調査

  • std::stoi()は、C++11以降で利用可能との事なので、g++とgccを4.8以降にしてみた。
    • とりあえず、普通にビルドする場合には大丈夫だったが、DxLib用のビルドをするとダメだった。
    • (2018-11-09追記) よく考えたら、MinGWを使ってたからg++更新しても意味なかったのでは?
# 使ってた奴↓
$ i686-w64-mingw32-g++
  • ここを見ると、「特定の条件下でガードされる場合があるので、以下のdefineを切ってみて」とか言っているのでやってみたがダメだった。
#define _GLIBCXX_USE_C99 1
  • 上記リンクのもうちょっと下に、ビルド時のオプションを調整してみては?的な事が書かれていたので、やってみたらOKだった。
-std=c++11 

まとめ

 とりあえず、ビルド時にc++11であることをオプションを使って分からせるといいらしい。
 他にもc++11で大丈夫なはずのvector<vector<string>>とかでエラーが出てたから、c++11以前の状態でビルドしてたっぽい。