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以前の状態でビルドしてたっぽい。