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

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

Bu kodu, bilgisayarımdaki MinGW GCC 4.7.2'yi çalıştırarak denedim. Yanlış yapıyorumStd :: stoi ile ilgili sorunlar, MinGW GCC üzerinde çalışmayan 4.7.2

enter image description here

, ben cppreference bu var: Bana bu hata veriyor. Tam olarak aynı kod. Ve açıklanan bir farklı hata here.

+0

Aynı hatadır. Farklı ama aynı durumda görünüyor. MinGW sorunu. – stardust

+0

Bunu ben yaptım. Kişisel olarak bir PP koşuluna girip el ile yorum yapmam gerekti ve sonrasında non-wstrings için iyi çalıştı. – chris

+0

@chris, neyi yorumlamak zorunda kaldığınızı açıklayabilir misiniz? –

cevap

14

Bu sizin MinGW bir yama ihtiyacı görünüyor: Enabling string conversion functions in MinGW Yukarıdaki linkte

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

, bir .zip dosya varsa, onu indirip mekanizma aşağıdakiler den

  • Kopya wchar.h ve stdio.h dahil : C: \ mingw \ içerir ( C değiştirmek: \ mingw \ uygun bir dizin ile)
  • kopyalama os_defines.ht aşağıdaki dizine (üzerine) zip dosyasının dizin o aşağıdaki dizin (üzerine yazma): C: \ mingw \ lib \ gcc \ mingw32 \ 4.7.0 \ include \ C++ \ mingw32 \ bit ( C: \ mingw \ uygun dizini ile değiştirin) (4.7.0 ile değiştirin) doğru sürüm numarası)
+0

Hey, hatta "wstring" için çalışıyor. Fena değil. – chris

+0

Teşekkürler, bir çekicilik gibi çalıştı! : D –

+1

İnsanlar, ** dosyaların doğrudan değiştirilmesinin, MinGW GCC 4.7 ** 'den daha sonraki sürümlerde güvenli olması garanti edilmediğini unutmayın. - pastebin parçacıklarını kullanın, dosyaları açın ve varolan dosyalara yorum ekleyin/ekleyin. Bu şekilde uygulandığında, hala MinGW GCC 4.8.1 afaik üzerinde çalışıyor – Conduit

0

Başka bir çözüm kutudan doğru çalışır MinGW-w64, kullanmaktır. Bu, hem 32-bit hem de 64-bit yapıları üretebilen bir MinGW çatalıdır.