2014-02-23 89 views
0

我在第一個getline(iss,name,',')之前使用了std :: ignore(1,',')並且收到錯誤'ignore'在這個命名空間中未聲明' STD」。std :: ignore編譯器錯誤的解釋

 if (myfile.is_open()){ 
98  while (getline (myfile,line)) { 
99   //parse line 
100   string myText(line); 
101   istringstream iss(myText); 
102   if(!(iss>>id)) id=0; 
103 
104   std::ignore(iss,1,','); 
105   std::getline(iss,name,','); 
106   std::getline(iss,status,','); 
107   std::getline(iss,email,','); 
108   cout<<name<<endl; 
109   Student newStudent(id,name,status,email); 

爲什麼它的getline函數工作,但忽略不?

+2

您是否試過閱讀[documentation](http://en.cppreference.com/w/cpp/utility/tuple/ignore)?這根本不是'std :: ignore'。 – chris

+0

我知道我在一起不正確。我只是想看看我是否理解錯了。首先,我嘗試了std :: ignore(1,',')並得到了相同的錯誤。但下面的答案正是我所需要的。該文檔沒有詳細解釋它的完全幫助。 – user3341518

+0

FWIW,[在那裏搜索](http://en.cppreference.com/mwiki/index.php?title=Special%3ASearch&search=ignore&button=)通常很不錯。在你的情況下,'std :: istringstream'是最相關的,但它們都非常相似。 – chris

回答

5

ignore是一個成員函數。

iss.ignore(1, ','); 
+0

BTW他真正需要的是'iss.ignore()',因爲他只想忽略一個字符。 – 0x499602D2