2016-09-01 9 views
0

Я беру содержимое из одного файла и передавая его другому. В частности, я ищу строки, содержащие подстроку «LIBOR/Swap». Однако это не имеет значения, и я прокомментировал их. Таким образом, этот конкретный код на данный момент действительно берет каждую строку в одном CSV-файле (файле) и передает их в другой CSV-файл (temp).getline (файл, строка) пропускает строки - C++

Проблема в том, что передача пропускает линии. См. Прикрепленные фотографии, чтобы увидеть строки, которые он пропускает при передаче данных.

original file

new file

Как вы можете видеть, с первых USD LIBOR/своп линии, она пропускает 1 день скорость. Это происходит в другом месте кода.

Любая причина, почему? Благодарю.

ifstream file; 
ofstream temp; 

file.open("YC Rate Levels.csv"); 
temp.open("Temp.csv"); 

if (file.is_open()) 
{ 
    string line; 
    string test = "LIBOR/Swap"; 

    while (getline(file, line)) 
    { 
      getline(file, line); 
     //if(line.find(test) != string::npos) 
     //{ 
      temp << line << endl; 
     //} 
    } 

    temp.close(); 
    file.close(); 

} else cout << "File did not open."; 

std::cin.clear(); 
std::cin.ignore(32767, '\n'); 
std::cin.get(); 

} 

ответ

1

Вы звоните GetLine (файл, строка) дважды - один раз в заголовке, а(), а затем снова в теле. Удалите второй.

+0

Это сработало. Я думал, что, хотя заявления были условными? То есть код просто продолжается, пока есть новая строка. Но нет реального «действия» по созданию линии. Спасибо! – user5619709

+0

Нет, действие выполняется, возвращается значение, и если это значение является ложным, цикл while будет завершен. В противном случае в этом случае метод getline() должен был бы знать, чтобы оценить, но не реально запустить, и все методы, которые он вызывает, также ... – LordWilmore

+0

А, я вижу. Спасибо. – user5619709