Как можно преобразовать файл.txt в двоичный файл (.dat) с помощью C++ и fstream?

Я пытаюсь написать простую программу для проверки эффективности пользователя с помощью клавиатуры (только слов в минуту и ​​точности на данный момент), но у меня возникают трудности с частью манипулирования файлами. Я хочу, чтобы список слов хранился в файле.txt (для удобства редактирования), например так:

    cheese
    computer
    photograph
    download
    etc...

Я хочу иметь возможность преобразовать файл.txt в целом в двоичный файл, в котором каждое слово входит в запись в файле.dat, но мне трудно понять, как fstream читает данные из.txt файл. Какой самый простой способ прочитать слова из списка с помощью fstream, чтобы их можно было добавлять к записям в двоичном файле?

2 ответа

Как сказал duskwuff, расширения ничего не значат. Файлы хранятся в формате ASCII или в двоичном формате.

Каждый байт сохраняется как его эквивалент ASCII, если файл является файлом ASCII. Бинарные файлы - это просто необработанные данные, которые хранятся без каких-либо преобразований. Что касается вашего вопроса, вы можете сделать следующее:

  1. Прочитайте входной файл, как вы это обычно делаете (ASCII)
  2. Запишите его обратно в другой файл с помощью fwrite

Чтение из fstream на самом деле довольно прямое. Каждая строка читается "getline", пока "fstream.is_good" не вернет "false". Также взгляните на учебники на cplusplus.com. Это должно сделать это:

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

using namespace std;

int main() {
  fstream myfile;
  string line;
  myfile.open("sample.txt");
  if  ( myfile.is_open() ) {
    while ( myfile.good() ) {
      getline( myfile, line);
      // conversion and output function goes here
      // this example just prints it to stdout
      cout << line << endl;
    }
    myfile.close();
  } else {
    cerr << "could not open file" << endl;
  }
  return 0; 
}
Другие вопросы по тегам