如何查看c ++程序生成的.dat文件?

时间:2015-06-27 03:50:57

标签: c++ fstream file-handling

我正在学习c ++文件处理。首先,我使用fstream库生成了一个.txt文件并在记事本上查看了数据,但是当我创建了一个东西(.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文件中的所有数据,但当我直接打开该文件时我的操作系统没有确定它是什么类型的文件。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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的十六进制转储(假设它是二进制文件)。