Невозможно записать в текстовый файл, используя ios: ate на c ++ - PullRequest
1 голос
/ 13 марта 2019

Я использую Visual Studio 2017 для практики C ++, у меня был некоторый опыт работы с C ++ на TurboC ++.Пытаясь создать программу, которая читает и пишет из файла, у меня возникают проблемы при использовании «ios :: Ate» при открытии файла.

file.open («text.txt»,ios :: ate);

Мой код выглядит следующим образом.

#include "pch.h"
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    fstream file;
    file.open("text.txt", ios::ate);

    char a;

    while(1){
        cin.get(a);
        if (a != '0')
            file << a;
        else break;
    }

    file.close();
}

Когда я запускаю эту программу, она запускается без ошибок, но когда я открываю файл, он пуст.

Я пытался использовать ios :: out, и он отлично работает, но я не хочу обрезать файл каждый раз, когда хочу записать в него.

1 Ответ

1 голос
/ 13 марта 2019

В вашем коде предполагается, что файл существует, вы не указываете направление ввода-вывода, и вам следует ВСЕГДА проверять, успешно ли выполнена такая операция, как file.open .

int main()
{
    fstream file;

// open or create file if it doesn't exist, append.
    file.open("text.txt", fstream::out | fstream::app);

// did the file open?
    if (file.is_open()) {
        char a;

        while (1) {
            cin.get(a);
            if (a != '0')
                file << a;
            else break;
        }

        file.close();
    }
}
...