Что делают cin и cout при открытии файла ofstream? - PullRequest
0 голосов
/ 07 июня 2018

Когда открывается файл ofstream outfile, записываются ли в файл только данные, прочитанные outfile <<, или сообщения, отображаемые cout, также сохраняются в файле?
И является ли информацияcin занято просто временным хранилищем или cin также записывает в файл?Например, я взял программу из Файловый поток Пример .

    #include <fstream>
    #include <iostream>
    using namespace std;

    int main () {
    char data[100];

    // open a file in write mode.
    ofstream outfile;
    outfile.open("afile.dat");

    cout << "Writing to the file" << endl;
    cout << "Enter your name: "; 
    cin.getline(data, 100);

    // write inputted data into the file.
    outfile << data << endl;

    cout << "Enter your age: "; 
    cin >> data;
    cin.ignore();

    // again write inputted data into the file.
    outfile << data << endl;

    // close the opened file.
    outfile.close();

    // open a file in read mode.
    ifstream infile; 
    infile.open("afile.dat"); 

    cout << "Reading from the file" << endl; 
    infile >> data; 

    // write the data at the screen.
    cout << data << endl;

    // again read the data from the file and display it.
    infile >> data; 
    cout << data << endl; 

    // close the opened file.
    infile.close();

    return 0;
    }

Вот cout << Запись в файл , записанный в файл, например?А также, cin используется только для получения значений и как временное хранилище?Или каждый cin записан в файл напрямую?

1 Ответ

0 голосов
/ 07 июня 2018

Если вы прокрутите немного вниз на https://www.tutorialspoint.com/cplusplus/cpp_files_streams.htm,, вы увидите пример запуска программы.

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

Если вы сами скомпилируете и запустите программу, внутри afile.dat файл, который создается, вы увидите следующее:

Zara
9

Исходя из этого, мы можем выяснить, что только данные, вставленные в поток выходного файла outfile, записываются в файл, и чтосообщения, отправленные на cout, не сохраняются в файле (они отображаются только для пользователя).

cout и cin являются специальными - они представляют собой потоки для стандартного вывода и стандартного ввода, которыепо умолчанию прикрепляются к окну терминала пользователя.Они дают вам способ записать информацию в окно терминала, которую будет видеть пользователь (cout), и способ прочитать, что пользователь вводит в (cin).Существует также cerr, который используется для вывода ошибок пользователю.

Вы можете думать о потоках, вроде кранов и стоков.Данные считываются из входного потока (вода поступает из крана), а данные записываются в выходной поток (вода уходит в канализацию);Ваш код может манипулировать входными данными и изменять их или перемещать их, что-то вроде шланга или трубы, контролирующих, куда течет вода.Стандартный ввод / вывод / ошибка являются одним из примеров представления взаимодействия с терминалом пользователя как «потоки», но вы можете использовать аналогичный метод ввода и вывода данных как «потоки» данных с файлами.

ИзВ примере вывода вы можете видеть, что пользователь набрал Zara и 9, которые были прочитаны с использованием потока cin, когда программа предложила пользователю ввести имя и возраст, записав в поток cout.Затем программа взяла данные, считанные из стандартного ввода, и использовала поток выходного файла (ofstream) для записи данных в файл, а затем программа считывает данные из файла с использованием потока входного файла (ifstream) и показывает его пользователю, записав его в стандартный формат.

...