Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с файловыми потоками

17K
29 октября 2006 года
freddy_kruger
7 / / 09.07.2006
Приветствую Уважаемые,
Назрел вопрос которые пока не удаётся решить чтением литературы.
В Кратце о проблеме: Пишу клиент-серверную прогу, сервер под линухой на с++, на серверной стороне храниться файлик tmp с содержимым:
1|101
1|102
1|103 и тд. Пользователю предлагается ввести число из второго столбца, допустим он вводит 102, и сервер должен соответственно заменить в файлике tmp для числа 102 1->0. т.е. долже получится файлик вида:
1|101
0|102
1|103 и тд.
Вопрос: как с помощью потоков открыть файл tmp для чтения и записи одновременно.
Спасибо. Жду содержательных советов.
3
29 октября 2006 года
Green
4.8K / / 20.01.2000
Ты уверен, что тебе надо чтение+запись?
Не лучше ли считать файл, а потом перезаписать?
17K
29 октября 2006 года
freddy_kruger
7 / / 09.07.2006
Если сначала считать, потом записать,то как найти строчку в которой надо менять значение?!
3
30 октября 2006 года
Green
4.8K / / 20.01.2000
Не понял вопрос.
Считай всё в некоторый ассоциативный контейнер, измени, потом скинь контейнер в файл.
Т.е. примерно так (это псевдокод):
Код:
// 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;
}

Думаю, принцип понятен, нормальный код напишешь сам.
17K
30 октября 2006 года
freddy_kruger
7 / / 09.07.2006
хм...интересная идея но както сложно, открывать потом закрывать...
нельзя как то всё упростить, чтобы по факту совпадения сразу писать нужно значение?
видимо придётся копать в сторону fopen ("xxx", "r+");
а не в с торону потоков :( . Как думаеш идея с fopen прокатит?!
сейчас пишу другу часть кода, эксперементировать пока не получится:-)
3
30 октября 2006 года
Green
4.8K / / 20.01.2000
Если при изменении не меняется размер данных, то прокатит.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог