我有一个c ++代码段,它应该从文件中读取一些信息,并且无法找到文件或信息,从屏幕上读取它。这是代码:
char c;
bool found=false;
int N;
double step;
ifstream in;
in.open(name.c_str());
if(in) {
while(!found && in >> c) {
while(c!='=') in >> c;
in >> N;
if(N==wp.N) {
found=true;
while(c!=':') in >> c;
in >> step;
}
c='a';
}
}
if(!found) {
cout << "max=";
cin >> step;
}
以上是根据文件中数据的结构构建的,当信息在文件中时(即某些时候 N = wp.N )或文件没有,一切都有效不存在(即 if(in)不是真的)。
但是当文件存在但不包含信息时会出现问题,即 N == wp.N 永远不会成立。然后程序冻结(大概是在文件的末尾,所以发现永远不会是真的)。我期待包括 in&gt;&gt; 中的 -loop会修复此问题,但我也尝试使用 in.eof()。
有什么建议吗?
答案 0 :(得分:1)
您可以在任何in&gt;&gt;。
之后找到eof()所以我假设你在循环时(c!=':')或while(c!='=')
答案 1 :(得分:1)
问题在于你的第二个循环,它将无限循环
如果您在没有阅读'='
的情况下到达文件末尾。你需要的
in >> c
也处于条件状态。