爲什麼一切都被讀爲0?C++文件I/O錯誤?
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();
不是挑剔的,但你不需要ios :: in與ifstream,它已經被定義爲輸入。如果您的文件打開失敗會發生什麼,您嘗試讀取數據。 – jonsca 2011-03-31 08:13:35
你似乎以二進制模式打開文件,但後來像處理文本一樣處理數據。爲什麼不首先在文本模式下打開文件? – 2011-03-31 08:13:53
我可能有一個更簡單的解決方案,但因爲我不確定,所以我發佈了[作爲問題](http://stackoverflow.com/questions/5497284/)。 – 2011-03-31 08:47:43