2016-10-14 2 views
-1

Я столкнулся с этой проблемой, пытаясь взять данные из входного файла в мой vector<stack<string>>. Я не знаю, почему, но выглядит мой код полностью пропустить первую строку ввода Вот входной файл:Почему он пропускает первую строку?

1 D 
2 C A 
3 
4 B E 

Вот мой код

ifstream myfile1; 
ifstream myfile2;           //take in the input file 

string line, filename, _block; 
vector<stack<string>> _stack; 
stack <string> _elements; 

cout << "Please enter name of beginning state" << endl; 
cin >> filename; 
// ------------------------------------------------------------------- 
//  OPEN FILE AND LOAD VERTICES AND EDGES IN APPROPRIATE VECTOR 
// ------------------------------------------------------------------- 
myfile1.open(filename.c_str()); 
if (myfile1.is_open()) 
{ 
    cout << "File found!" << endl; 
    myfile1 >> line;  
    while (getline(myfile1, line)) 
    { 
     int i; 
     string a; 
     stringstream ss (line); 
     ss >> i;     // "e" 
     cout<<"Test stupid: "<< i <<endl; 
     while(ss >> a) 
     { 
      _elements.push(a); 
      cout <<"Test dump: "<< a <<endl; 
     } 
     _stack.push_back(_elements); 
     //cout <<"Test: "<<_elements.top()<<endl; 
     num_of_stacks = _stack.size(); 
     num_of_elements = _elements.size(); 
    } 
    //cout <<"Test: "<<_elements.top()<<endl; 
    while(!_elements.empty()) 
    { 
     string w = _elements.top(); 
     cout <<"Test1: "<< w <<endl; 
     _elements.pop(); 
    } 
    cout <<"Test2: "<<num_of_stacks<<endl; 
    cout <<"Test3: "<<num_of_elements<<endl; 
} 
+0

И когда вы прошли через свой код с помощью отладчика, какие наблюдения вы сделали? –

+2

Как вы думаете, 'myfile >> line' делает? – Barmar

+0

Это не пропуск первой строки, из-за этого просто пропускается первое число на первой линии. – Barmar

ответ

0

Перед вашим while (getline(myfile1, line)) { цикла, то есть myfile1 >> line;, который будет считываться в данных, которые немедленно отбрасываются, когда вы вызываете getline в первый раз. Возможно, удалите строку myfile1 >> line;?

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