2013-11-22 37 views
17

成員我有:cygwin的克++的std :: Stoi旅館「錯誤: 'Stoi旅館' 不是「STD

-cygwin 1.7.25在Windows 7/32位

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

-libstdC++一個 - > GCC-克++ - 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); 

我搜索了幾個小時,但我還是沒能找到解決的辦法。這裏有什麼問題?

+1

奇怪。它應該工作...這似乎是一些奇怪的錯誤。 – Ali

回答

11

這是一個錯誤,有些庫代碼Cygwin的可能不完整的端口(這是一個cplusplus11功能) - 一些東西必須要經過的所有改變。確保報告。

的解決方案是容易當然:#include <cstdlib> strtol(s.c_str(),0,10);

www.cplusplus.com/.../strtol

類似的mingw錯誤也here

std::stoi doesn't exist in g++ 4.6.1 on MinGW

+1

也有Cygwin的最新穩定版本這個問題,但to_string –

+0

cygwin的v4.9.2的Windows 7/64仍然沒有Stoi旅館,但strtol將不工作 –

1

提到的編譯器不被重視。在Windows上,您最好的選擇是使用視覺工作室,因爲它始終保持最新狀態。這裏的錯誤是,宏定義是錯誤的開始。問題從iomanip.h和iosbase開始。所以他們必須改變所有的代碼。這裏有用戶自制的補丁,但我完全不信任它們,因爲它們可能包含更多的錯誤,然後是原始副本。但這取決於你,我只是堅持使用visual studio express版本。

0

Stoi旅館只在mingw64對我的作品是正確的。 如果您使用Codeblocks,不要忘記檢查您的項目編譯器是否設置爲mingw64。

3

昨天我有同樣的問題。 「錯誤:'stoi'不是'std'的成員。」

首先,我確信C++ 11已啓用。然後,我將g ++編譯器更新到最新版本。之後,這個錯誤消失了。

+0

測試,與G ++ 4.9 Debian的工作。儘管用戶需要Windows解決方案 –

相關問題