// read
ifstream is(filename);
while( !is.eof() ) {
is >> val >> delim >> key;
map[key] = val;
}
is.close();
// change
cout << "insert key";
cin >> key;
map[key] = 0;
// write
ofstream os(filename);
for(it = map.bagin(); it != map.end(); ++it) {
os << it->second << '|' << it->first << endl;
}
Работа с файловыми потоками
Назрел вопрос которые пока не удаётся решить чтением литературы.
В Кратце о проблеме: Пишу клиент-серверную прогу, сервер под линухой на с++, на серверной стороне храниться файлик tmp с содержимым:
1|101
1|102
1|103 и тд. Пользователю предлагается ввести число из второго столбца, допустим он вводит 102, и сервер должен соответственно заменить в файлике tmp для числа 102 1->0. т.е. долже получится файлик вида:
1|101
0|102
1|103 и тд.
Вопрос: как с помощью потоков открыть файл tmp для чтения и записи одновременно.
Спасибо. Жду содержательных советов.
Не лучше ли считать файл, а потом перезаписать?
Если сначала считать, потом записать,то как найти строчку в которой надо менять значение?!
Считай всё в некоторый ассоциативный контейнер, измени, потом скинь контейнер в файл.
Т.е. примерно так (это псевдокод):
Код:
Думаю, принцип понятен, нормальный код напишешь сам.
нельзя как то всё упростить, чтобы по факту совпадения сразу писать нужно значение?
видимо придётся копать в сторону fopen ("xxx", "r+");
а не в с торону потоков :( . Как думаеш идея с fopen прокатит?!
сейчас пишу другу часть кода, эксперементировать пока не получится:-)
Если при изменении не меняется размер данных, то прокатит.