【发布时间】:2011-03-31 08:09:16
【问题描述】:
为什么所有内容都被读取为 0?
int width = 5;
int height = 5;
int someTile = 1;
char buff[128];
ifstream file("test.txt", ios::in|ios::binary);
if(file.is_open())
{
cout << "open";
}
file.read(buff, sizeof(int));
width = atoi(buff);
file.read(buff, sizeof(int));
height = atoi(buff);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
file.read(buff, sizeof(int));
someTile = atoi(buff);
cout << someTile;
}
}
我的文件格式代码是用 C# 编写的:
FileStream stream = new FileStream("test.txt", FileMode.Create);
BinaryWriter writer = new BinaryWriter(stream);
// write a line of text to the file
writer.Write(15);
writer.Write(5);
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 5; j++)
{
writer.Write(1);
}
}
// close the stream
writer.Close();
【问题讨论】:
-
不要吹毛求疵,但你不需要带有 ifstream 的 ios::in,它已经被定义为输入。如果您的文件打开失败,您仍然尝试读取数据会发生什么。
-
您似乎以二进制模式打开文件,然后像处理文本一样处理数据。为什么不首先以文本模式打开文件?
-
我可能有一个更简单的解决方案,但由于我不确定,我发布了它as a question。