Wie um zu überprüfen, ob stringstream>>Zeichenfolge wird nichts bringen, die auf die Zeichenfolge?
Beispielsweise bei der Analyse einer text-Datei, einige Male in dieser Datei haben Sachen wie diese:
keyword a string here
keyword another string
keyword
keyword again a string
Beachten Sie, dass die 3. Zeile eine leere Zeichenfolge (nichts oder Leerzeichen).. Das Ding ist, dass wenn du stringstream>>laststring, und stringstream einen leeren string (null oder nur Leerzeichen), wird es nicht überschreiben die "laststring", wird es nichts tun. Es gibt sowieso zu prüfen, diese situation vor der hand? Ich möchte nicht, dass zum erstellen eines temporären leere Zeichenkette, nur um zu überprüfen, es ist noch leer, nach stringstream>> scheint lahm.
InformationsquelleAutor Icebone1000 | 2012-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht Lesen können, von stream - seinen Zustand ändert, so dass bei der Umwandlung in bool false zurück:
Sehen ideone Beispiel
InformationsquelleAutor PiotrNycz
Können Sie nur wissen, nach versuchen zu Lesen, ob dort etwas war oder nicht. Was Sie vielleicht in der Lage sein zu tun ist, überspringen von Leerzeichen und sehen, ob es ein nicht-Leerzeichen in der nächsten location:
Gegeben, dass die leeren Saiten sind Billig zu erstellen, ich würde nicht die Mühe und versuchen Sie, Lesen Sie die Zeichenfolge. Beachten Sie jedoch, dass das Lesen von streams ist nicht zeilenbasiert, d.h., in deinem Fall oben Sie brauchen, um split die ersten Zeilen oder so etwas wie
std::getline()
zu Lesen, der zweite Teil der Zeile.getline
, und liest aus dem stringstream. ansonsten, Lesen würde nicht "leerer string" und gehen würde, um die nächste Zeile.Naja, da er besorgt ist über die Erstellung einer leeren Zeichenfolge, es scheint merkwürdig, ersten Lesen in eine Zeile 😉 Das heißt, ich lese die Frage, wie das Lesen einer einzigen Zeile. Andernfalls überspringen von Leerzeichen nicht funktionieren würde, entweder.
InformationsquelleAutor Dietmar Kühl
Können Sie getline, zum Lesen einer Zeile aus der Datei. Dann kopieren Sie die Zeile in einen string-stream und Lesen Sie die Wörter aus dem string-stream ein zu einer Zeit. Die streams werden automatisch mit dem Lesen aufhören, wenn Sie laufen aus der Zeilen /Wörter.
Müssen Sie
iostream
,fstream
,sstream
undstring
.InformationsquelleAutor Ryan