Почему я не могу записать данные из файла в строку после добавления некоторой информации в файл с помощью переменной ofstream? - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь записать и прочитать информацию из одного и того же файла, но на самом деле я не знаю, как это сделать и почему он не работает.

Когда я компилирую код, строка, которую я ожидаю заполнить информацией из файла, на самом деле не заполняется.

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

using namespace std;


int main()
{
    string str;
    ifstream fin("Asort.txt");
    ofstream fout("Asort.txt");

    fout << "hello world";  

    getline(fin, str);
    cout << str;
}

1 Ответ

0 голосов
/ 23 марта 2020

Проблема в расположении «курсора» (то есть маркера) после оператора:

fout << "hello world";

Иллюстрация:

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

using namespace std;


int main()
{
    string str;
    ifstream fin("Asort.txt");
    ofstream fout("Asort.txt");

    fout << "hello world";  //output to cout this statement(fout.tellp()) to see where the marker is at this point in the stream
    fout.seekp(0);   //reset the marker in the fout stream to the beginning
    getline(fin, str);
    cout << str;
}

Курсор теперь в конце потока. Поэтому вы должны использовать: fout.seekp (0); чтобы получить его в начале, чтобы плавник мог начать чтение с начала потока.

...