Как можно преобразовать файл.txt в двоичный файл (.dat) с помощью C++ и fstream?
Я пытаюсь написать простую программу для проверки эффективности пользователя с помощью клавиатуры (только слов в минуту и точности на данный момент), но у меня возникают трудности с частью манипулирования файлами. Я хочу, чтобы список слов хранился в файле.txt (для удобства редактирования), например так:
cheese
computer
photograph
download
etc...
Я хочу иметь возможность преобразовать файл.txt в целом в двоичный файл, в котором каждое слово входит в запись в файле.dat, но мне трудно понять, как fstream читает данные из.txt файл. Какой самый простой способ прочитать слова из списка с помощью fstream, чтобы их можно было добавлять к записям в двоичном файле?
2 ответа
Как сказал duskwuff, расширения ничего не значат. Файлы хранятся в формате ASCII или в двоичном формате.
Каждый байт сохраняется как его эквивалент ASCII, если файл является файлом ASCII. Бинарные файлы - это просто необработанные данные, которые хранятся без каких-либо преобразований. Что касается вашего вопроса, вы можете сделать следующее:
- Прочитайте входной файл, как вы это обычно делаете (ASCII)
- Запишите его обратно в другой файл с помощью 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;
}