2012-12-12 3 views
8

Ich habe ein Problem. Ich lade die ganze Datei und gehe dann durch, um ein paar Infos zu bekommen. Im Kartenformat können jedoch 0 oder 20 "Zeilen" mit der Info vorhanden sein. Ich muss wissen, wie man std :: string durchstreichen kann. Es gibt eine Funktion (Quell-Stream, Ziel-String, Dezimal), aber ich brauche (Quell-String, Ziel-String, Dezimal). In Streams zu suchen, ist in C++ nicht möglich (nur mit vielen Temp-Strings und Extrahieren und Einfügen oft, es ist unklar und ich möchte es nicht so unordentlich machen). Ich möchte also wissen, wie man aus einer std :: string eine Linie bekommt.Wie mache ich "getline" von einer std :: string?

Thans

Antwort

17

Sie scheinen std::istringstream zu wollen, die in der Kopfzeile ist <sstream>:

std::string some_string = "..."; 

std::istringstream iss(some_string); 

std::string line; 
while (std::getline(iss, line)) 
{ 
    // Do something with `line` 
} 
+0

Dank. Einfache Frage dazu. Wie kann getline NICHT eine Zeile bekommen, wenn im Stream keine Dezimalzahl gefunden wird? – user1873947

+0

Weil das immer noch ein Problem ist, da ich nicht in einem Stream suchen kann (deshalb wollte ich String getline, was nicht existiert). – user1873947

+0

@ user1873947 Die einfachste ist wahrscheinlich zu überprüfen, ob die Zeichenfolge, die Sie verwenden, eine Ziffer enthält, und dann das ganze 'std :: istringstream' /' std :: getline' Bit überspringen. –