gpt4 book ai didi

c++ - 读取文件 on.get 函数时程序卡住

转载 作者:行者123 更新时间:2023-11-28 06:50:33 25 4
gpt4 key购买 nike

我在 win32 上创建程序,程序停止响应 .get 函数,我不知道还能做什么,我认为问题出在 std::ifstream inFile;但是我在主程序之外需要它,所以我可以在任何地方使用它,例如在这里我在 WM_CREATE 和 WM_KEYDOWN 中使用 inFile 并在窗口关闭时关闭文件。可以吗?

char Map[10][10], c[256];
std::ifstream inFile;

//windProc
case WM_CREATE: {
inFile.open ("Map.txt");
if (!inFile) {
::MessageBox(hwnd, "Failed to open file", "Error", MB_OK);
}
int i,j;
do { //loop for skipping comments
Map[j][i] = inFile.get(); //<---stuck here
if (Map[j][i] ==';') inFile.getline(c, 256);
} while (Map[j][i] ==';');

while (Map[j][i] !=';') { //loop for painting
switch (Map[j][i]) {
//
//paint based on char
//
}
i++;
Map[j][i] = inFile.get();
if (i==10) {j++; i=0;}
}
}
case WM_KEYDOWN: {
//...
inFile.getline(c, 256); // continue reading from file
int j=0; int i=0;
Map[j][i] = inFile.get();
while (Map[j][i] !=';') {
switch (Map[j][i]) {
//
//paint based on char
//
}
i++;
Map[j][i] = inFile.get();
if (i==10) {j++; i=0;}
}
break; }
case WM_DESTROY:
inFile.close();
PostQuitMessage (0);
break;

最佳答案

如果 Steam 在您的 while 循环中进入错误/eof 状态,Map[j][i] 将永远不会设置为 ';',从而导致无限循环:

do {                                             //loop for skipping comments
Map[j][i] = inFile.get(); //<---stuck here
if (Map[j][i] ==';') inFile.getline(c, 256);
} while (inFile.good() && Map[j][i] ==';');

关于c++ - 读取文件 on.get 函数时程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com