2017-03-13 8 views
-2

Gibt es eine Möglichkeit, Zeilenende im Stringstream zu erkennen? Meine Datei:Zeichenfolge. Ende der Zeile erkennen

1/2 
2/3 
3/4 
4/5 

So etwas funktioniert nicht:

stringstream buffer; 
buffer << file.rdbuf(); 
string str; 
getline(buffer, str); 
... 
istringstream ss(str); 
int num; 
ss >> num;  
if (ss.peek() == '/') //WORKS AS EXPECTED! 
{...} 
if(ss.peek() == '\n') //NOT WORKING! SKIPS THIS CONDITION. 
{...} 

Dies wird gewarnt wurde:

if(ss.telg() == -1) //WARNED! 
      ~~~~~ 
{...} 
+5

Bitte posten Sie eine [mcve]. –

+0

vielleicht bist du auf Windows? Wenn ja, ist die "Endzeile" 2 Zeichen: \ r \ n – quetzalcoatl

+0

Wie laden Sie 'str'? 'Schnur str; istringstream ss (str); 'kann nicht die ganze Geschichte sein. Wenn es mit 'std :: getline 'ist, entfernt' getline 'höflich das EOL für Sie. – user4581301

Antwort

1

std::istringstream hat eine eof() Methode:

Returns tr Wenn der zugehörige Stream das Ende der Datei erreicht hat. Gibt speziell zurück, wenn eofbit in rdstate() festgelegt ist.

string str; 
istringstream ss(str); 
int num; 
ss >> num; 
if (ss.eof()) {...} 
+0

Ja! Vielen Dank! Das funktioniert! – NOoB