【问题标题】:End of file and while-loop文件结束和while循环
【发布时间】:2012-12-23 21:52:26
【问题描述】:

我有一个 c++ 代码 sn-p 应该从文件中读取一些信息,并且找不到文件或信息,从屏幕读取它。代码如下:

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

有什么建议吗?

【问题讨论】:

    标签: c++ file while-loop eof


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢你们!我希望我能在两个答案上都给出正确的答案,反正我是最快的。干杯
    【解决方案2】:

    问题出在您的第二个循环中,它将无限循环 如果您在没有读取'=' 的情况下到达文件末尾。你需要 in &gt;&gt; c 也在那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2014-04-20
      • 2014-10-31
      • 2019-03-15
      相关资源
      最近更新 更多