2015-09-11 8 views
0

Im пытается прочитать данные из файла .txt в вектор, но он останавливается после сохранения первой строки.Вектор только читает одну строку из .txt файла C++

Это данные, которые я читаю из файла.

0 100 08 00 00 
0,182,08 00 15 
1,100,08 50 46 
1,132,08 51 18 

И это код

input.open ("RaceData.txt"); 
if (input.fail()) 
{ 
    cout <<"Cannot Open File.\n"; 
    exit(1); 
} 

int lap(0), racer(0), time(0); 
vector <int> data; 

while (input >> lap >> racer >> time) 
{ 
    data.push_back(lap); 
    data.push_back(racer); 
    data.push_back(time); 

} 

//display 
for (int i=0; i < data.size(); i++) 
    cout << data [i] << " "; 

Я думаю, что он не может продолжать чтение из-за запятых, если это так, как я не читал запятые?

Заранее спасибо.

+2

Вы хотите прочитать или, по крайней мере, пропустить запятую. То, что вы не извлекаете их, - это проблема. Я думаю, вы должны прочитать всю строку в строке, а затем разобрать ее по отдельности. –

+1

Ваш формат файла кажется непротиворечивым. Почему первая строка не имеет запятых, а все следующие? Если вы хотите анализировать файл, который вы читаете, вам нужно иметь согласованный формат. –

+0

@bku_drytt Пример в книге в книге, которую я использую, расплывчато. Я использовал данные, которые были даны, но я думаю, что это означало, что у меня не было никаких запятых, потому что после того, как я избавился от всех запятых, данные были сохранены в векторе просто отлично. – Bea

ответ

0

Лучший способ игнорировать запятые - не игнорировать пробелы. Вот пример:

... 
char c; 
input >> std::noskipws; 
while (input >> lap >> c >> racer >> c >> time >> c) 
{ 
... 

В зависимости от того, как вы ожидаете, что формат файла будет, возможно, потребуется изменить выше, чтобы принять multple пробельные. Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^