Подтвердить что ты не робот

Как читать и писать в текстовый файл на С++?

Привет всем, я только начал изучать С++, и я хотел знать, как читать и писать в текстовый файл. Я видел много примеров, но им было трудно понять/следовать, и у них все было много. Я надеялся, что кто-то здесь поможет. Я полный новичок, поэтому мне нужны четкие инструкции. Вот пример того, что я пытаюсь сделать:

#include <iostream>
#include <fstream>
using namespace std;
string usreq, usr, yn, usrenter;
int start ()
{
    cout << "Welcome..."
int main ()
{
    cout << "Is this your first time using TEST" << endl;
    cin >> yn;
    if (yn == "y")
        {
            ofstream iusrfile;
            ofstream ousrfile;
            iusrfile.open("usrfile.txt", "w");
            iusrfile >> usr;
            cout << iusrfile;
            iusrfile.close();
            cout << "Please type your Username. \n";
            cin >> usrenter;
            if (usrenter == usr)
            {
            start ();
            }
        }
    else
        {
            cout << "THAT IS NOT A REGISTERED USERNAME.";
        }

    return 0;

}
4b9b3361

Ответ 1

Необходимые файлы заголовков:

#include <iostream>
#include <fstream>

объявить поток входных файлов:

ifstream in("in.txt");

объявить поток выходных файлов:

ofstream out("out.txt");

если вы хотите использовать переменную для имени файла, вместо жесткого кодирования, используйте это:

string file_name = "my_file.txt";
ifstream in2(file_name.c_str());

чтение из файла в переменные (предположим, что файл имеет 2 встроенных переменных):

int num1,num2;
in >> num1 >> num2;

или, считая строку время из файла:

string line;
while(getline(in,line)){
//do something with the line
}

записать переменные обратно в файл:

out << num1 << num2;

закрыть файлы:

in.close();
out.close();

Ответ 2

Посмотрите этот учебник или этот, они оба довольно просты. Если вы заинтересованы в альтернативе, так это то, как вы выполняете файл ввода/вывода в C.

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

Ответ 3

Механизм С++ по умолчанию для файла IO называется потоками. Потоки могут быть трех видов: входных, выходных и входных. Входные потоки действуют как источники данных. Для чтения данных из входного потока вы используете оператор >>:

istream >> my_variable; //This code will read a value from stream into your variable.

Оператор >> действует разным для разных типов. Если в приведенном выше примере my_variable был int, тогда число будет считываться из strem, если my_variable - строка, тогда будет прочитано слово и т.д. Вы можете прочитать больше одного значения из потока, написав istream >> a >> b >> c;, где a, b и c будут вашими переменными.

Выходные потоки действуют как приемник, на который вы можете записывать свои данные. Чтобы записать данные в поток, используйте оператор <<.

ostream << my_variable; //This code will write a value from your variable into stream.

Как и с входными потоками, вы можете записать несколько значений в поток, написав что-то вроде этого:

ostream << a << b << c;

Очевидно, что входные потоки могут действовать как оба.

В вашем примере кода вы используете объекты потока cout и cin. cout означает консольный вывод и cin для console-input. Это предопределенные потоки для взаимодействия с консолью по умолчанию.

Чтобы взаимодействовать с файлами, вам нужно использовать типы ifstream и ofstream. Подобно cin и cout, ifstream обозначает input-file-stream, а ofstream обозначает output-file-stream.

Ваш код может выглядеть так:

#include <iostream>
#include <fstream>

using namespace std;

int start()
{
    cout << "Welcome...";

    // do fancy stuff

    return 0;
}

int main ()
{
    string usreq, usr, yn, usrenter;

    cout << "Is this your first time using TEST" << endl;
    cin >> yn;
    if (yn == "y")
    {
        ifstream iusrfile;
        ofstream ousrfile;
        iusrfile.open("usrfile.txt");
        iusrfile >> usr;
        cout << iusrfile; // I'm not sure what are you trying to do here, perhaps print iusrfile contents?
        iusrfile.close();
        cout << "Please type your Username. \n";
        cin >> usrenter;
        if (usrenter == usr)
        {
            start ();
        }
    }
    else
    {
        cout << "THAT IS NOT A REGISTERED USERNAME.";
    }

    return 0;
}

Для дальнейшего чтения вы можете посмотреть С++-вставка ввода-вывода

Ответ 4

Чтобы читать, вы должны создать экземпляр ifsteam, а не потока.

ifstream iusrfile;

Вы должны открыть файл в режиме чтения.

iusrfile.open("usrfile.txt", ifstream::in);

Также это утверждение неверно.

cout<<iusrfile;

Если вы пытаетесь распечатать данные, которые вы читаете из файла, вы должны сделать:

cout<<usr;

Вы можете узнать больше об ifstream и его API здесь