web-dev-qa-db-ja.com

cygwin g ++ std :: stoi "エラー: ‘stoi’は ‘stdのメンバーではありません

私が持っています:

-Windows 7/32ビット上のcygwin 1.7.25

-g ++ --version-> g ++(GCC)4.8.2

-libstdc ++。a-> gcc-g ++-4.8.2-1

C++ Hello Worldを作成しようとしました:

#include <string>

int main() 
{
   std::string s = "123";
   int i = std::stoi(s);
}

コンパイルは与える:

$ g++ -std=c++11 main.cpp
main.cpp: In function ‘int main()’:
main.cpp:6:10: error: ‘stoi’ is not a member of ‘std’
  int i = std::stoi(s);

何時間も検索しましたが、まだ解決策が見つかりませんでした。ここの問題は何ですか?

18
user3021700

これはバグであり、cygwinへの一部のライブラリコードの移植が不完全である可能性があります(これはcplusplus11の機能です)。必ず報告してください。

ソリューションはもちろん簡単です:#include <cstdlib> strtol(s.c_str(),0,10);

www.cplusplus.com/.../strtol

同様のmingwバグも言及されています here

std :: stoiはMinGWのg ++​​ 4.6.1には存在しません

11
user3125280

昨日も同じ問題があります。 「エラー:「stoi」は「std」のメンバーではありません。」

まず、c ++ 11が有効になっていることを確認しました。次に、g ++コンパイラーを最新バージョンに更新しました。その後、このエラーは消えました。

3
ShuaiYu8

コンパイラは真剣に受け止められていません。 Windowsでは、常に最新の状態に保たれているため、おそらくVisual Studioを使用するのが最善の策です。ここでのバグは、マクロの定義が最初から間違っていることです。問題はiomanip.hとiosbaseから始まります。したがって、彼らはそこにあるすべてのコードを変更する必要があります。これにはユーザーが作成したパッチがありますが、元のコピーよりもさらに多くのバグが含まれている可能性があるため、私はそれらをまったく信頼しません。しかし、それはあなた次第です、私はただビジュアルスタジオエクスプレス版に固執します。

1
Josh

stoiは、私にとってmingw64でのみ正しく動作します。コードブロックを使用する場合は、プロジェクトのコンパイラがmingw64に設定されているかどうかを確認することを忘れないでください。

0
srrr21