J'utilise boost::split pour analyser un fichier de données. Le fichier de données contient des lignes telles que les suivantes.
data.txt
1:1~15 ASTKGPSVFPLAPSS SVFPLAPSS -12.6 98.3
Les espaces blancs entre les éléments sont des onglets. Le code que je dois utiliser pour diviser la ligne ci-dessus est le suivant.
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;
Pour la ligne de code ci-dessus, je devrais obtenir une impression de 5, mais j'obtiens 6. J'ai essayé de lire la documentation et cette solution semble faire ce que je veux, mais il y a quelque chose qui m'échappe. Merci de votre compréhension.
Editer : En exécutant une boucle for comme suit sur dataLine, on obtient ce qui suit.
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
****