2012-11-27 82 views
4

Possible Duplicate:
How to convert a number to string and vice versa in C++如何在gcc中使用C++ 11 std :: stoi?

我使用Qt Creator的2.5.0和gcc 4.7(Debian的4.7.2 -4)。我在.pro文件中添加了「QMAKE_CXXFLAGS + = -std = C++ 11」。一切似乎都沒問題,我用C++ 11 std :: for_each等等。但是,當我列入「串」頁眉和想使用Stoi旅館,我得到了以下錯誤:

performer.cpp:336: error: 'std::string' has no member named 'stoi' 

我發現有關MinGW和一個more一些問題,以Eclipse CDT,他們有自己的答案。但我使用Linux,爲什麼它不在這裏工作?

+0

你可以顯示導致此錯誤的代碼行嗎? – Praetorian

+1

你想嘗試'string.stoi(...)'嗎?它應該是'std :: stoi(string,...);'。 – zch

+0

你應該已經發布了更多的代碼:) –

回答

4
#include <iostream> 
#include <string> 

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

#include <iostream> 
#include <string> 

using namespace std  

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

看看http://en.cppreference.com/w/cpp/string/basic_string/stol

+0

非常感謝。這似乎是一個相當愚蠢的問題,但無論如何,我希望它能幫助別人在將來不問它:D – Razorfever

+0

當我用g ++ -std = C++ 11編譯時,stoi不需要像你的指定的名字空間頂部的例子。 cppreference.com列出它在std命名空間中,但具有與此處發佈的相同的示例。某人如何知道標準名稱空間的哪些成員不需要std資格? –

+2

@Chad Skeeters:沒有'使用命名空間std','std'命名空間的所有成員都需要'std'限定,*除非*它們可以通過*參數相關的名稱查找*(ADL)找到。 ADL是這段代碼編譯時不使用名稱空間標準而不使用標準::的原因。這是一個相當廣泛的話題,這個評論的邊界太窄而無法容納。搜索它,網上有很多信息。 – AnT

2

std::stoi是在命名空間內的功能,以一個字符串作爲它的參數:

std::string s = "123"; 
int i = std::stoi(s); 

從錯誤信息,它看起來像你期望它成爲string的成員,調用d爲s.stoi()(或者可能爲std::string::stoi(s));事實並非如此。如果這不是問題,那麼請張貼有問題的代碼,以便我們不需要猜測它有什麼問題。

相關問題