Wie verwenden von boost-split-aufteilen einer Zeichenfolge und leere Werte ignorieren?

Ich bin mit boost::split zum analysieren einer Daten-Datei. Die Daten-Datei enthält Zeilen wie die folgenden.

data.txt

1:1~15  ASTKGPSVFPLAPSS SVFPLAPSS   -12.6   98.3    

Den Leerraum zwischen den Elementen sind tabs. Den code habe ich zu teilen Sie die obige Zeile wie folgt.

std::string buf;
/*Assign the line from the file to buf*/
std::vector<std::string> dataLine;
boost::split( dataLine, buf , boost::is_any_of("\t "), boost::token_compress_on);       //Split data line
cout << dataLine.size() << endl;

Für die obige Codezeile sollte ich einen Druck von 5, aber ich bekomme 6. Ich habe versucht zu Lesen durch die Dokumentation, und diese Lösung scheint so, als ob Sie sollte das tun, was ich will, klar ich bin etwas fehlt. Danke!

Bearbeiten:
Läuft ein forloop wie folgt auf dataLine Sie bekommen die folgenden.

cout << "****" << endl;
for(int i = 0 ; i < dataLine.size() ; i ++) cout << dataLine[i] << endl;
cout << "****" << endl;


****
1:1~15
ASTKGPSVFPLAPSS
SVFPLAPSS
-12.6
98.3

****

InformationsquelleAutor der Frage PhiloEpisteme | 2013-03-28

Schreibe einen Kommentar