Red Planet
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: а что, он у тебя до этого пустой был? и ты его читал? | akaGM, это часть из одной задачи. Если первая строка равна заданной, то дальше происходит запись данных в конец, но неизвестно, существует ли файл, если существует, правильная ли первая строка. Цитата: да, просто разные системы в/в по-разному оптимизируют этот ввод/вывод + сюда влезает ещё и ОСь... так что в некоторых случаях с чтением/записью в один и тот же файл возникают проблемы и иногда помогает только принудительный сброс в файл буфера... | Спасибо. Теперь хочу понять, что значит запись Код: ios_base::in | ios_base::out | ios_base::append | Раньше думал, что это просто для примера показано. Думал, что в качестве openmode может быть или ios_base::in, или ios_base::out, или ios_base::append. Однако на другом форуме мне сказали: Цитата: это не для примера показано. здесь задается вполне определённый режим открытия файла. нет тут никаких "или"(читай альтернатив). файл открывается для чтения и дозаписи(в конец) | Вопрос. Что, можно открыть файл и на чтение, и на запись одновременно? Да вроде бы нет, не работает. Чтение есть, а записи нет. Код: fstream fs("test.txt", ios::in | ios::out | ios::app); string s; fs >> s; cout << "Read string: " << s << endl << "Now let\'s write." << endl; fs << "Ipsum" << "\n"; fs.close(); | Второй вопрос. Что запись запись? Код: ios_base::in | ios_base::out | ios_base::append | С ios_base::in | ios_base::out | ios_base::append решено. Можно открывать на чтение и запись. Логика такая: если строка единственная и считана, то достигнут конец файла, нужно сделать clear(), то есть установить iostate state = goodbit Если конец не достигнут, то нужно для app поставить позицию в конец, без этого запись не идет. Код: fstream fs("test.txt", ios::in | ios::out | ios::app); string s; fs >> s; cout << "Read string: " << s << endl << "Now let\'s write." << endl; if (fs.eof()) fs.clear(); else fs.seekp(ios_base::end); fs << "\n" << "Ipsum" << "\n"; fs.close(); |
| Всего записей: 215 | Зарегистр. 18-06-2009 | Отправлено: 17:42 17-03-2012 | Исправлено: Red Planet, 18:18 17-03-2012 |
|