Я немного озадачен тем, как управлять файловым потоком с помощью fstream
. Я закажу мои основные вопросы, приведенные ниже:Вопросы управления Fstream
1) Прежде всего, почему вызов конструкторов fstream file(file_name);
или fstream file; file.open(file_name);
без флага, как ios::in
или ios::out
не создает какой-либо новый файл?
2) Предположим, я хочу использовать тот же файл для ввода и вывода. Я могу сделать что-то вроде fstream file
, а затем позвонить file.open(file_name, ios::out)
или file.open(file_name, ios::in)
, когда мне нужно использовать его для вывода или операции ввода отдельно. Но что, если мне нужно делать ввод и вывод одновременно? Например, мне нужно прочитать из файла и заменить строку или символ всякий раз, когда я нахожу определенное слово или номер во время чтения. Является ли вызов file.open(file_name)
для уже созданного файла (и без указания какого-либо флага)? Позволяет ли я выполнять операцию чтения/записи с тем же потоком?
Если файл слишком большой, откройте файл для чтения, прочитайте все в файле в памяти, закройте файл, обновите данные, откройте файл для записи, запишите данные, закройте файл. Чтение и запись в файл одновременно сопряжено с проблемами, которые лучше всего можно избежать, если сможете. –
@luigi вы можете открыть/создать файл с использованием обоих режимов; fs.open («Test.txt», std :: ios :: in | ios :: out); –
@RSahu, к сожалению, я использую файл с единственной целью - не использовать память. Я бы с удовольствием избегал этого, но я вроде как вынужден – luigi