Каков самый простой (самый простой) способ определить, когда вы достигаете конца строки данных во время чтения из обычного текстового файла с использованием ifstream? В основном мне нужно делать разные вещи с данными, основанными на его местоположении (измеряется номером строки) в текстовом файле.Обнаружение символов новой строки inFile stream C++
Так что, если у меня был текстовый файл со следующим содержимым:
12 54 873 9 87 23
34 25 93 10 94 5 8
первой линии я мог бы сохранить, но вторая строка мне нужно изменить перед сохранением или отменить, или сделать какой-то другой операция.
Прямой файл читаемый ищет что-то вроде этого
while (inFile >> temp)
//store temp;
EDIT:
Я не проверял это еще бит это то, что я придумал. Я не много делал с более сложными функциями класса строк, поэтому мой синтаксис может быть неправильным, но похоже ли, что я на правильном пути?
// include the necessary libraries
string line, delim = ' ';
ifstream inFile;
int temp, lineNum = 1;
size_t pos = 0;
file.open('/path/to/file');
while(getline(file, line)){
while ((pos = line.find(delim)) != npos) {
temp = file.substr(0, file.find(delim);
line.erase(0, pos + delim.length());
// depending on the value of lineNum
// work with temp
}
lineNum++;
}
Быстрый вопрос, если он может конвертировать в int
(что мне нужно, чтобы это было), когда я задаю его непосредственно на темп, или если мне придется бросить его как межд перед началом работы с ним.
GetLine в 'линию' строки, поставить 'линию' в istringstream и обрабатывать его –
'file.substr()' должно быть 'line.substr()', а 'file.find()' должно быть 'line.find()'. Но у вас уже есть 'pos', поэтому второй' find() 'избыточен. Чтобы упростить синтаксический анализ, вы должны использовать 'istringstream' для анализа каждой строки. Затем вы можете использовать 'getline()' с разделителем для чтения разделимых подстрок из потока или использовать оператор '>>' потока, когда разделитель является whitspace. Я отредактировал свой ответ, чтобы показать это. –