我无法阅读' .dat'文件。我已经厌倦了所有可能的方式,累了谷歌搜索,但我找不到解决方案。它给我的全部是整数的空值和字符串变量或char的垃圾值。这就是我写的
ifstream file;
file.open("data1.dat"); // I have also tried this way too like file.open("data1.dat", ios::binary, ios::in);
int data=0;
file >> data;
cout << data << endl;
system("pause");
return 0;
我正在使用visual studio来编译这段代码。我很确定指针正在进入数据文件,但我不知道数据没有被读取的原因。
.dat文件由每行的整数组成,范围从0,所以我只需要读取文件并从每行获取数字,并找到文件中所有数字的总和。该文件包含数字 5, 468, 3200, 32,等等。每个号码都在一个新行中。该文件可以包含任意数量的记录。 this how .dat file looks when opened using a notepad editor
答案 0 :(得分:1)
您的代码在我的系统上“有效”。
以下编译(没有“using namespace std;”)
为方便起见,我更改了文件名。
我在代码的同一工作目录中创建了't391.dat'文件,并放入10行,每行1个值,1..9,0。
#include <fstream>
#include <iostream>
int t391a(void)
{
std::ifstream file;
file.open("t391.dat");
int data=0;
file >> data;
std::cout << data << std::endl; // echo of input / proof it works
//system("pause");
file.close();
return 0;
}
此代码输出第一个值(这是它尝试做的全部),因此它正在工作!
输入的回声是个好主意。
作为一项实验,我暂时将't391.dat'文件重命名为其他内容。代码运行完成并打印单个0,不文件中的第一个值。也许这表明你的文件没有找到,我猜不出来。为了确认,我恢复了文件,上面的“再次工作”。
代码中缺少项目:
错误检查 - file.open()
读取到文件结尾的循环
错误检查 - 数据项
file.close - 可能不需要
如果您仍在使用此问题,我的代码的最小扩展版本可以解决这些问题。让我知道。
答案 1 :(得分:0)
这是我刚发现的一种方式
#include <bits/stdc++.h>
using namespace std;
int main(){
unsigned int a;
unsigned char c;
ifstream file;
file.open("ou.bin", ios::binary);
if(!file.is_open()){
cout<<"error";
return 0;
}
for(int i=0; i<8; i++){
file>>c;
a = c;
a = a<<8;
file>>c;
a = a+ c;
cout<<a<<endl;
}
file.close();
return 0;
}
这用于在一个数字中存储两个字节,您可以在一个数字甚至一个字节中存储多个字节。
希望这有帮助。
答案 2 :(得分:-1)
class ValueGet {
public:
int data;
ValueGet() {
data = 0;
}
};
int main()
{
ValueGet vg;
ifstream file;
file.open("data1.dat", fstream::binary | fstream::out); // Opens a file in binary mode for input operations i.e., getting data from file.
if (!file)
cout << "File Not Found." << endl;
else {
file.seekg(0); // To make sure that the data is read from the starting position of the file.
while (file.read((char *)&vg, sizeof(vg))) // Iterates through the file till the pointer reads the last line of the file.
cout<<vg.data<<endl;
}
//system("pause");
return 0;
}
答案 3 :(得分:-4)
您将无法读取.dat文件并在您的上下文中理解它们 - 它们是用于存储数据的通用格式。除非你知道它的内容或它们是如何被指定的,否则你总会得到垃圾。