Я использую boost:: split для анализа файла данных. Файл данных содержит строки, такие как следующие.
data.txt
1:1~15 ASTKGPSVFPLAPSS SVFPLAPSS -12.6 98.3
Пустое пространство между элементами - вкладки. Код, который я должен разбить выше, выглядит следующим образом.
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;
Для вышеприведенной строки кода я должен получить распечатку из 5, но я получаю 6. Я попытался прочитать документацию, и это решение кажется так, как будто оно должно делать то, что я хочу, ясно, что я чего-то не хватает. Спасибо!
Изменить: Запустив forloop следующим образом в dataLine, вы получите следующее.
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
****