2013-08-09 2 views
2

В файле test.txt у меня есть одно слово «aa». Я хочу заменить его на «aa1». Однако нижеприведенная программа не изменяет файл. Что не так?fstream для чтения и записи

#include <string> 
#include<iostream> 
#include<fstream> 
using namespace std; 

int main() 
{ 
    fstream iofile("test.txt",ios_base::in|ios_base::app); 
    if (!iofile) 
      cerr << "Unable to open file!"; 

    string word; 
    iofile >> word; 
    word.push_back('1'); 
    iofile.seekg(0); 
    iofile << word; 
} 

ответ

3

Вы понимаете, что ios_base::app вызывает вас, чтобы добавить в конец файла, независимо от того, где вы пытаетесь искать записи, не так ли? Возможно, вы имели в виду конкретно ios_base::out вместо этого?

Кроме того, для записей это seekp() не seekg().

+0

Thanx. Замена ios_base :: app с помощью ios_base :: out решила проблему. Он работает как с seekp(), так и с seekg() – cpp

+1

@GrzegorzWilanowski В этом ограниченном примере он скорее всего работает только с 'seekg()', потому что указатель put все равно сидит в 0, и обновление указателя get не изменит этого ... Попробуйте сделать то же самое, где строка, которую вы пишете, не находится в смещении 0 (или сразу после того, что вы написали последним) ... – twalberg

Смежные вопросы