我正在编写代码来读取一个代表“迷宫”的文件中的7x15文本块。
#include <iostream>
#include <fstream>
#include <string>
#include "board.h"
int main()
{
char charBoard[7][15]; //the array we will use to scan the maze and modify it
ifstream loadMaze("maze"); //the fstream we will use to take in a maze
char temp; //our temperary holder of each char we read in
for(int i = 0;i < 7; i++)
{
for(int j = 0; j < 15; j++)
{
temp= loadMaze.get();
charBoard[i][j] = temp;
cout << charBoard[i][j]; //testing
}
cout << endl;
}
return 0;
}
这是我的原始草稿,但这不起作用,因为它一直在返回?对于它读取的每个字符。 这是迷宫即时测试:
############# # ############ # # ######### #### # ! # ############
编辑: cout打印这个:
############# # ############ # # ######### #### # ! # #########
我没有逃脱吗?
我已经编写了几个小时,所以我认为这是一个简单的错误,我现在没有抓住那个让我吵架的错误。谢谢!
答案 0 :(得分:3)
尝试像“c:\ MyMazes \ maze”这样的绝对路径。
投入系统(“cd”)以查看当前目录的位置。如果您在查找当前目录时遇到问题,请查看此SO discussion
这是完整的代码 - 这应该显示整个迷宫(如果可能)和当前目录。
char charBoard[7][15]; //the array we will use to scan the maze and modify it
system("cd");
ifstream loadMaze("c:\\MyMazes\\maze"); //the fstream we will use to take in a maze
if(!loadMaze.fail())
{
for(int i = 0;i < 7; i++)
{
// Display a new line
cout<<endl;
for(int j = 0; j < 15; j++)
{
//Read the maze character
loadMaze.get(charBoard[i][j]);
cout << charBoard[i][j]; //testing
}
// Read the newline
loadMaze.get();
}
return 0;
}
return 1;
答案 1 :(得分:0)
您可以检查文件中的提取是否正确:使用good()
的{{1}} API
ifstream
OR
在开头本身:
for(int j = 0; j < 15; j++)
{
if(!loadMaze.good())
{
cout << "path incorrect";
}
temp= loadMaze.get();
cout << "temp = " << temp << endl; //testing
charBoard[i][j] = temp;
cout << charBoard[i][j]; //testing
}
答案 2 :(得分:0)
尝试添加行
if (!loadMaze) throw 1;
在loadMaze声明之后,如果文件不存在,这将抛出异常。这是一个黑客,真的你应该抛出一个真正的错误。但它可以测试。
答案 3 :(得分:0)
检查文件打开是否失败。你可以通过检查它是否合适来找到它:
http://www.cplusplus.com/reference/iostream/ios/good/
如果文件打开失败,则尝试写入文件的绝对路径(C:/ Documents and Settings /.../ maze),看看是否有效。如果是这样,那只是文件路径错了,你必须要玩它。