对不起,我是 C++ 菜鸟!我四处寻找解决方案,但似乎找不到最适合我需要的解决方案。我正在尝试读取 txt 文件的宽度(行中的最大字符数)和高度(每个文件的最大行数)。计划使用变量来帮助制作动态大小的 txt 文件/级别。
在此之前我有固定的宽度和高度!
TXT 文件:房间布局的简单字符输出(空间=地板,#=墙,X=门):
########
# #
# X
# #
########
问题:认为这是一个简单的问题,但它只读取每个变量中的 2 个(hNum,wNum),然后中断循环并且程序无法继续。
-我究竟做错了什么?
- 我应该以某种方式使用 seekg 或不同的循环吗?
- 我需要将我的矢量更改为二维矢量吗?
- 实现这一目标的最佳方法是什么?
房间.cpp
//LOAD CURRENT ROOM FROM FILE
ss << RoomNo;
string str = ss.str();
string fname = ("Room");
fname.append(str);
fname.append(".txt");
infile.open(fname);
infile.clear();
infile.seekg(0);
if(infile.is_open())
{
// Sets width and height depndant on txt file size
string line;
//NOT WORKING!
while( !infile.eof())
{
hNum++;
getline ( infile, line);
wNum += line.length();
break;
}
height=hNum;
width=wNum;
//END
// Loop to end of file- to get you all the lines from txt file.
while(!infile.eof())
{
int i;
for(int row = 0; row < width; row++)
{
infile.getline(RoomFile, 256);
i = 0;
for(int col = 0; col < height; col++)
{
data.push_back(RoomFile[i]);
i++;
}
}
}
}
else
{
cout << "ERROR: infile not open" << endl;
}
infile.close();
更新
这就是我得到的,尝试按照 Sky 的建议进行操作……但不能全力以赴。然后跨步并认为循环没有激活所以改变了论点。现在出现运行时错误!
问题:表达式:向量下标超出范围!
建议任何人?
string line;
while(getline(infile,line))
{
getline(infile, line);
tempVector.push_back(line);
}
width=line.length();
height=tempVector.size();