2013-04-21 33 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的計算機上試過這段代碼。它給我這個錯誤:問題std :: stoi,不能在MinGW GCC 4.7.2上運行

enter image description here

什麼我做錯了,我得到這個從cppreference。它完全相同的代碼。它與描述的here不同。

+0

這是相同的錯誤。看起來不同但相同的情況。 MinGW問題。 – stardust 2013-04-21 14:34:14

+0

我有這個。我個人不得不進去手動註釋掉一個PP條件,然後它對非wstrings很好。 – chris 2013-04-21 14:35:21

+0

@chris你能解釋一下你有什麼註釋嗎? – 2013-12-15 23:16:45

回答

14

看來你的MinGW需要補丁: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文件,下載並

  • 複製wchar.h和stdio.h中從包括目錄在zip文件 到以下目錄(覆蓋):C:\ MinGW的\包括(取代 C:\ MinGW的\與適當的目錄中)
  • 複印os_defines.ht o覆蓋以下目錄: C:\ mingw \ lib \ gcc \ mingw32 \ 4.7.0 \ include \ C++ \ mingw32 \ bits(用適當的目錄替換 C:\ mingw \)(用4.7.0替換在 正確的版本號)
+0

嘿,甚至適用於'wstring'。這並不壞。 – chris 2013-04-21 14:41:13

+0

謝謝,工作就像一個魅力! :D – 2013-04-21 15:11:37

+1

人們應該注意,在MinGW GCC 4.7 **以後的版本中,不能保證**直接替換文件是安全的 - 使用pastebin片段,打開文件以及對現有文件進行註釋/添加。這樣應用,MinGW GCC 4.8.1 afaik仍然可以正常工作 – Conduit 2014-09-16 16:25:16

0

另一種解決方案是使用MinGW-w64,其工作正常開箱。這是MinGW的一個分支,可以生成32位和64位版本。