Моя цель - прочитать файл построчно, проверить, содержит ли эта строка какое-то число, и если да, то переписать эту строку. Затем продолжите чтение файла. Мне удалось сделать это для одной строки, но я не могу понять, как продолжить чтение остальной части файла. Вот как я заменяю одну строку (каждая строка имеет известный фиксированный размер):
while(getline(fs, line)){
if(condition){
pos = fs.tellg(); //gets current read position (end of the line I want to change)
pos -= line.length()+1; //position of the beginning of the line
fs.clear(); //switch to write mode
fs.seekp(pos); //seek to beginning of line
fs << new_data; //overwrite old data with new data (also fixed size)
fs.close(); //Done.
continue;
}
}
Как вернуться к чтению и продолжить цикл getline?
fs.close()
явно неверен, но есть более фундаментальная проблема, заключающаяся в том, что вы не можете просто заменить строки на месте, как здесь. И я не знаю, где вы слышали, чтоfs.clear()
переключается в режим записи; это наверняка не так. - person Lightness Races in Orbit   schedule 20.03.2016grep -w number a > b ; mv b a
- person Breaking not so bad   schedule 20.03.2016