0

我有一个 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永远不会正确。然后程序冻结(大概在文件的末尾,所以发现永远不会是真的)。我期望在while循环中包含in >> c可以解决此问题,但我也尝试过使用in.eof()

有什么建议么?

4

2 回答 2

1

您可能会在您的任何 in >> 之后找到 eof()。

所以我假设你正在循环 while(c!=':') 或 while(c!='=')

于 2013-01-09T16:54:53.283 回答
1

问题出在您的第二个循环中,如果您到达文件末尾而不读取'='. 你也需要 in >> c那里的条件。

于 2013-01-09T16:57:33.300 回答