Чтение данных файла без ограничения размера - PullRequest
0 голосов
/ 20 сентября 2019

В следующем примере чтения файла из здесь :

#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;
}

Мои вопросы:

  1. Переменная dataдлины 100. Что произойдет, если пользователь введет данные длиннее 100 или если файл, используемый для чтения в данные, имеет длину> 100?

  2. Что мы можем использовать, чтобы не было ограниченийразмером для данных?

  3. Можем ли мы использовать string data вместо char data[100] здесь?

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

1 Ответ

0 голосов
/ 20 сентября 2019
  1. Переменная data имеет длину 100. Что произойдет, если пользователь вводит данные длиннее 100 или если файл, используемый для чтения в данные, имеет длину> 100?

Поведение программы будет неопределенным.

Что мы можем использовать, чтобы не ограничивать размер данных?

std::string.Его размер ограничен только размером виртуального адресного пространства, а также доступной памяти.

Можем ли мы использовать string data вместо char data[100] здесь?

Предположим, string равно std::string, тогда да.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...