【发布时间】:2012-09-29 20:38:43
【问题描述】:
我有一个程序,我在其中指定要使用 cin 读取的文件,所以我运行程序 ./prog
void Building::build(){
char mode;
cin >> mode >> sizeFloors >> numFloors;
if(mode == 'M')
readMap(sizeFloors, numFloors);
}
^^ 这执行得很好
void Building::readMap(int floorSize, int numFloors){
string line;
int curFloor(numFloors - 1);
while( curFloor >= 0 ){
cin >> line;
if(line.empty()){
cout << "Error: input file too short" << endl;
exit(1);
}
}
^^ 这里 line.empty() 返回 true
这是输入文件
M
4
1
WWWW
WWWW
WWWW
WWWW
很明显行不应该返回空
【问题讨论】:
-
它在第一次运行时返回空,还是在读取 4 行后返回。你永远不会递减
curFloor所以循环是无限的。 -
我省略了不相关的代码,第一次运行返回空
-
我仍然不理解人们花费更多时间来发布他们的代码,而不是在启用警告的情况下编译它(Linux 上的
g++ -Wall -g),然后使用调试器(Linux 上的gdb)。学习调试程序是一项宝贵的技能(不仅仅是到处问)。 -
可能是因为我运行了 ddd,看到该行返回空,并说它应该正在读取该行。