У меня возникли проблемы с чтением в двойных значениях в массив из файла после первой итерации цикла for, больше не видно из-за символа новой строки. Как я могу обойти эту проблему?При чтении формы файла, как учесть новые строки после использования оператора <<?
Пример входного файла:
слово
2,55
< слово --- как сейчас это не будет читать
5,66
file.open("productsIn.txt");
if(!file.is_open()){
cout << "Could not open file." << endl;
return 1;
}
if(file.is_open()){
cout << "file open" << endl;
for(int i = 0; i < MAX_COUNT; i++){
getline(file, productName[i]);
file >> prices[i];
if(file.good()){
cout << productName[i] << endl << prices[i] << endl;
}
}
}
file.close();
Не проблема, но вторая инструкция 'if' избыточна; если файл не открыт, функция возвращается из-за первого 'if' и не дойдет до кода, который пытается прочитать из файла. Кроме того, нет необходимости вызывать 'file.close()'; деструктор объекта 'file' сделает это. –
Скорее всего [это] (http://stackoverflow.com/questions/21567291/why-does-stdgetline-skip-input-after-a-formatted-extraction) - ваша проблема, но мне нужно будет увидеть образец содержимое файла обязательно. – NathanOliver
Смешивание 'getline' с форматированными экстракторами является сложным. Продолжайте использовать 'getline' для чтения строк и создайте' std :: istringstream' для чтения удвоений из результирующего объекта 'string'. –