170 похожих чатов

Подскажите пожалуйста,почему не отрабатывает цикл while ? Записать/дозапись происходит ,но считывание

из файла нет.




#include <iostream>
#include <string>
#include <fstream>

using namespace std;
int main()
{

string path = "./hello.txt";
string str;
fstream file;
file.open(path, fstream::in | fstream::out | fstream::app);
if (!file.is_open())
{
cout << " Ошибка в открытии файла" << endl;
}
else
{
int ch(0);
cin >> ch;
if ( ch == 1 )

{
cin >> str;
file << str << "\n";
}
if ( ch == 2 )
{
cout << " Успешно !!!" << endl;

while(!file.eof())
{
file >> str;
cout << str << endl;
}
}

}

file.close();

return 0;
}

8 ответов

15 просмотров

«успешно» печатает?

FUCK SOCIETY- Автор вопроса
Sergey Kaniskin
«успешно» печатает?

Да,но while не отрабатывает. Из файла информацию не выводит. Если убрать fstream::app то печать будет,но добавлять в файл тогда не будет.

FUCK SOCIETY
Да,но while не отрабатывает. Из файла информацию н...

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

У тебя файл открыт на append, он всегда в конце файла. А ты его на конец и проверяешь. Чтобы после записи начать из него читать, надо указатель чтения перевести на начало файла. Rewind называется, но методы fstream называются по другому, seek/p https://en.cppreference.com/w/cpp/io/basic_istream/seekg

Ilya Zviagin
У тебя файл открыт на append, он всегда в конце фа...

Что-то я не смог найти подтверждений того, где должен быть позиция чтения при открытии с app. сppreference говорит, что при записи курсор придёт в конец, но не говорит, что должно быть прт чтении. По идее, out должен при чтении переводить позицию в начало. Но мы проверяем eof раньше, чем читаем. while ( file >> str) { … } должно работать даже без seek

FUCK SOCIETY- Автор вопроса
Ilya Zviagin
У тебя файл открыт на append, он всегда в конце фа...

Почему тогда здесь всё получается ? https://youtu.be/bTysglLJ8No

FUCK SOCIETY
Почему тогда здесь всё получается ? https://youtu...

Ну я не буду туда смотреть, мне-то всё равно. Просто если ты хочешь из файла как-то читать (а файл для чтения и записи, то есть случай не тривиальный), то надо озаботиться, откуда конкретно, из какого места ты будешь читать.

FUCK SOCIETY- Автор вопроса
Ilya Zviagin
Ну я не буду туда смотреть, мне-то всё равно. Прос...

Хорошо,тогда скажи пожалуйста,,чисто своё мнение. там говорится,что fstream универсальный,он и записывает/дозаписывает и читает. Так вот лучше использовать отдельные потоки для чтения и записи ifstream и ofstream или же fstream как универсальный?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта