如何使用C ++和fstream将.txt文件转换为二进制文件(.dat)?

时间:2012-05-25 20:00:33

标签: c++ text binaryfiles fstream

我正在尝试编写一个简单的程序,用键盘测试用户效率(现在只是每分钟的单词和准确度),但我对文件操作部分有困难。我想要一个存储在.txt文件中的单词列表(为了便于编辑),如下所示:

    cheese
    computer
    photograph
    download
    etc...

我希望能够将整个.txt文件转换为二进制文件,每个单词都会进入.dat文件中的一个条目,但是我很难搞清楚fstream如何从中读取数据一个.txt文件。使用fstream从列表中读取单词的最简单方法是什么,以便将它们添加到二进制文件中的条目中?

2 个答案:

答案 0 :(得分:1)

像puskwuff说的那样,扩展并不意味着什么。文件以ASCII格式或二进制格式存储。

如果文件是ASCII文件,则每个字节都存储为ASCII等效字节。二进制文件只是原始数据,无需任何转换即可存储。就你的问题而言,你可以做到以下几点:

  1. 像往常一样阅读输入文件(ASCII)
  2. 使用fwrite
  3. 将其写回不同的文件

答案 1 :(得分:-1)

从fstream读取实际上非常简单。每行都由«getline»读取,直到«fstream.is_good»返回«false»。另请查看tutorials at 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; 
}