4 / 4 / 2
Регистрация: 24.05.2013
Сообщений: 300
1

Можно ли открыть поток для чтения и записи файла одновременно?

16.04.2017, 19:01. Показов 4327. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можно ли открыть поток для чтения и записи одновременно?
Этот код не работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
                wchar_t temp;
        wstring wchars;
        wfstream file(unicode_file, ios::binary | ios::in | ios::out);
        file.imbue(locale(locale(), new codecvt_utf16<wchar_t, 0x10ffff>));
        while (file.get(temp)) {
            wchars.push_back(temp);
        }
        wchars[3] = wchars[4]; //меняет что-то, чтобы заметить разницу
        file.seekp(ios::beg);
        for (wchar_t val : wchars) {
            file.put(val);
        }
        file.close();
Но этот работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        wchar_t temp;
        wstring wchars;
        wfstream file(unicode_file, ios::binary | ios::in);
        file.imbue(locale(locale(), new codecvt_utf16<wchar_t, 0x10ffff>));
        while (file.get(temp)) {
            wchars.push_back(temp);
        }
        wchars[3] = wchars[4];
        wfstream file0(unicode_file, ios::binary | ios::out);
        file0.imbue(locale(locale(), new codecvt_utf16<wchar_t, 0x10ffff>));
        for (wchar_t val : wchars) {
            file0.put(val);
        }
        file0.close();
Собственно говоря, можно ли за одно открытие файла и прочитать и записать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2017, 19:01
Ответы с готовыми решениями:

Как открыть файл одновременно для чтения и для записи?
Делаю вот так, но ничего не получается.:( std::fstream inOutCredit(&quot;credit.dat&quot;, std::ios::ate |...

Как работает блокнот, если файл невоможно открыть одновременно для записи и чтения?
сабж... интересно.

Как создать один файл для чтения и записи одновременно?
пробовал переписать с одного на другой и уже по новой считывать, но терялось содержимое файла ...

Как создать один файл для чтения и записи одновременно?
Пробовал перезапись, но содержимое файла терялось while (file1.hasNext()) { ...

4
59 / 59 / 53
Регистрация: 05.05.2013
Сообщений: 150
16.04.2017, 19:11 2
Лучший ответ Сообщение было отмечено Evgen8 как решение

Решение

попробуй сбросить флаги состояния:
C++
1
file.clear();
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.04.2017, 19:12 3
Цитата Сообщение от Evgen8 Посмотреть сообщение
Собственно говоря, можно ли за одно открытие файла и прочитать и записать?
Можно, но открытие файла всегда проверять нужно. При переходе от чтения к записи, нужно указать позицию куда записывать. При переходе от записи к чтению, не забывать освободить буфер (flush()).
0
4 / 4 / 2
Регистрация: 24.05.2013
Сообщений: 300
16.04.2017, 19:17  [ТС] 4
VAN0, это помогло, спасибо
А для чего это делается?
0
59 / 59 / 53
Регистрация: 05.05.2013
Сообщений: 150
16.04.2017, 19:28 5
Цитата Сообщение от Evgen8 Посмотреть сообщение
А для чего это делается?
у потоков есть куча флагов состояния и когда происходит считывание до конца - устанавливается флаг eof - конец файла, чтобы начать дальше читать или записывать, нужно этот флаг сбросить.
1
16.04.2017, 19:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2017, 19:28
Помогаю со студенческими работами здесь

Открыть файл для чтения, а если его нет, то создать его и открыть для записи
Здравствуйте! Подскажите, как сделать программу, чтобы она открывала файл для чтения, а если его...

Как сбросить поток для чтения файла с начала?
Добрый вечер. Создали поток, связали с ним файл (текстовый). Начинаем чтение файла, читаем,...

Как открыть файл для чтения/записи по локальной сети на удалённой машине?
Проблема следующая. 1. В сети на одном компе есть расшаренная папка с доступом локального...

Необходимо открыть файл для записи и чтения, прочитать инфу изменить и записать.
Подскажите начинающему плиз. собственно необходимо открыть файл для записи и чтения, прочитать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru