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

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

Tôi đã thử mã này trên máy tính đang chạy MinGW GCC 4.7.2. Nó mang lại cho tôi lỗi này:Sự cố với std :: stoi, không hoạt động trên MinGW GCC 4.7.2

enter image description here

Tôi đang làm gì sai, tôi nhận này từ cppreference. Mã chính xác của nó. Và một lỗi khác với lỗi được mô tả here.

+0

Đó là lỗi tương tự. Có vẻ khác nhưng trường hợp tương tự. Vấn đề MinGW. – stardust

+0

Tôi đã có điều này. Cá nhân tôi đã phải đi vào và tự nhận xét một điều kiện PP và sau đó nó làm việc tốt cho không wstrings. – chris

+0

@chris bạn có thể giải thích những gì bạn đã nhận xét không? –

Trả lời

14

Dường như MinGW của bạn cần một bản vá: 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

Trong liên kết ở trên, có một tập tin .zip, tải về nó và

  • Sao chép wchar.h và stdio.h từ bao gồm thư mục trong tệp zip vào thư mục sau (ghi đè): C: \ mingw \ include (thay thế C: \ mingw \ bằng thư mục thích hợp)
  • Sao chép os_defines.htm o thư mục sau (ghi đè): C: \ mingw \ lib \ gcc \ mingw32 \ 4.7.0 \ include \ C++ \ mingw32 \ bits (thay thế C: \ mingw \ với thư mục thích hợp) (thay thế 4.7.0 bằng số chính xác)
+0

Hey, thậm chí làm việc cho 'wstring'. Không tệ. – chris

+0

Cảm ơn, đã làm việc như một sự quyến rũ! : D –

+1

Mọi người nên lưu ý rằng ** thay thế trực tiếp các tệp không được đảm bảo an toàn trên các phiên bản sau MinGW GCC 4.7 ** - sử dụng các đoạn trích trước, mở tệp và nhận xét/thêm vào tệp hiện có. Áp dụng như vậy, điều này vẫn hoạt động tốt trên MinGW GCC 4.8.1 afaik – Conduit

0

Một giải pháp khác là sử dụng MinGW-w64, hoạt động chính xác. Đây là một nhánh của MinGW có thể sản xuất cả bản dựng 32 bit và 64 bit.

Các vấn đề liên quan