2015-06-27 200 views
0

我正在学习C++文件处理。首先,我使用fstream库生成了一个.txt文件,并在记事本上查看了数据,但是当我创建了一些东西(一个.dat文件)时,我不能将该文件打开到任何文本编辑器,但是我可以从C++ 。有没有任何文件查看器或使用我可以查看.dat文件的方式?如何查看由C++程序生成的.dat文件?

void display_all() 
{ 
    system("cls"); 
    cout<<"\n\n\n\t\tDISPLAY ALL RECORD !!!\n\n"; 
    fp.open("Shop.dat",ios::in); 
    while(fp.read((char*)&pr,sizeof(product))) 
    { 
     pr.show_product(); 
     cout<<"\n\n====================================\n"; 
     getch(); 
    } 
    fp.close(); 
    getch(); 
} 

上述功能是显示所有的数据在我Shop.dat文件,但是当我在没有确定直接打开这个文件我的操作系统是什么类型的文件,就是它了。

+0

你期待*看到了什么? – duskwuff

+0

如果我理解你的问题,这段代码可以读取你的文件,但你正在寻找一个OS实用程序,旨在打开同一种文件? –

+0

是的,你是正确的这段代码是从名为Shop.dat的文件读取数据,但我的问题是,我如何直接打开该文件到文本编辑器来查看该文件的内容? –

回答

0

我假设你想查看.dat文件的十六进制转储。您需要以二进制模式打开文件

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

     int main() 
     { 
      ifstream infile; 
      infile.open("Shop.dat", ios::binary | ios::in); 

      //Read file 
      char buffer[100];; 
      inFile.read (buffer, 100); 
      if (!inFile) 
      { 
      // An error occurred 
      } 


     return 0; 
    } 

编辑:您使用的是什么IDE?在Visual Studio中,只需单击文件(IIRC),即可看到.dat的十六进制转储(假设它是二进制文件)。

+0

好吧,让我检查 –

+0

我使用的代码块。代码块是否有这种类型的功能? –

1

你有你的个人文件格式和您的程序是唯一的方式来查看这样存储的信息。为什么?因为没有程序知道你自己的程序产生的字段的结构和大小。查看数据的唯一方法 - 创建您自己的记事本

另一个例子:在我的程序中,我使用json格式来保存和加载信息(使用Qt)。该信息可以存储为纯文本二进制文件。但这并不意味着每个了解json的程序都可以读取二进制文件并将其内容视为plain-json-text。那么,如果我想检查二进制文件的内容,我使用我自己的小工具将二进制文件转换为纯文本。这就是可以为你自己的目的 - 小转换工具或简单的只读“记事本”。

相关问题