2013-04-21 7 views
8
#include <iostream> 
#include <string> 

int main() 
{ 
    std::string test = "45"; 
    int myint = stoi(test); 
    std::cout << myint << '\n'; 
} 

MinGW GCC 4.7.2を実行しているコンピュータでこのコードを試しました。それは私にこのエラーを与える:MinGW GCC 4.7.2で動作しないstd :: stoiの問題

enter image description here

私が間違って何をやっている、私はcppreferenceからこれを得ました。それはまったく同じコードです。そして、その別のエラーはhereと記述されています。

+0

これは同じエラーです。異なるが同じケースに見える。 MinGWの問題。 – stardust

+0

私はこれを持っていた。私は個人的には入り込み、手動でPP条件をコメントアウトしなければなりませんでした。そして、それはnon-wstringsに対してうまくいきました。 – chris

+0

@chrisコメントアウトした内容を説明できますか? –

答えて

14

あなたのMinGWのパッチ必要がありそうです:含まからコピープロトタイプがwchar.hとstdio.hの

  • 上記のリンクでEnabling string conversion functions in MinGW

    This patch enables the following list of C++11 functions and templates in the std namespace:

    stoi, stol, stoul, stoll, stof, stod, stold, to_string, to_wstring

    を、.zipファイルがある、それをダウンロードして

    C:\ mingw \ include(適切なディレクトリに C:\ mingw \を置き換えます)
  • os_defines.htをコピーして、次のディレクトリに上書きします( )。 C:\ mingw \ lib \ gcc \ mingw32 \ 4.7.0 \ include \ C++ \ mingw32 \ bits(適切なディレクトリに C:\ mingw \を置き換えます)(4.7.0を 正しいバージョン番号)
+0

ちょっと、 'wstring'でも動作します。悪くない。 – chris

+0

ありがとう、魅力的なように働いた! :D –

+1

**ファイルの直接置換は、MinGW GCC 4.7以降のバージョンでは安全でないことに注意してください** ** - pastebinスニペットを使用し、ファイルを開き、既存のファイルにコメント/追加します。このように適用されても、これはMinGW GCC 4.8.1 afaikで正常に動作します – Conduit

0

もう1つの解決方法は、そのままの状態で正しく動作するMinGW-w64を使用することです。これは、32ビットと64ビットの両方のビルドを生成できるMinGWのフォークです。

関連する問題