c++ - "!"对绑定(bind)成员函数表达式的非法操作

标签 c++ file

好吧,我正在类里面阅读我的文件,当我执行以下操作时,它给了我错误。请提出任何解决方案。

void write2file (string water)
{
    ofstream write;
    write.open ("D:\\Assignments\Water.txt", ios::out|ios::app);
    {
        write<<water<<endl;

    }
    write.close();

}


     void DisplayW ()
     {
         ifstream read ("D:\\Assignments\Water.txt", ios::in|ios::app);

         while (!read.eof) //ERROR at this point//
         {
             read >> Elements[i];
             cout<<"Elements are: "<<Elements[i]<<endl;
         }

     }

最佳答案

解决方案:

 void DisplayW ()
 {
     ifstream read ("D:\\Assignments\\Water.txt", ios::in|ios::app);

     // while (!read.eof) //ERROR at this point//
     // better:
     while(!read.eof()) // I think this is what you intended to write
     {
         read >> Elements[i];
         cout<<"Elements are: "<<Elements[i]<<endl;
     }
 }

更好的解决方案:
    i = 0;
    while(read >> Elements[i++]);

解释:
    read >> Elements[i];

施行:
  • 从流中获取 int 并设置为元素
  • 根据操作成功设置 i/o 状态
  • 返回 ostream&
            i++;
    
  • 前进到下一个要阅读的元素;
    while( [[returned ostream&]] )
    
  • 将 ostream 转换为 bool 值;这将检查 ostream 状态(基于操作成功的 i/o 状态)和 eof 位,如果两者都正常则返回 true。
  • while 评估为 true 并读入下一个索引。

  • 在循环结束时,i会计算你的元素。

    基于您的代码的解决方案:
    i = 0;
    while(read >> Elements[i])
        cout<<"Elements are: "<<Elements[i++]<<endl; // note i++ as
                                                     // the last operation
    

    关于c++ - "!"对绑定(bind)成员函数表达式的非法操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23614126/

    相关文章:

    javascript - 是否正在复制文件

    iphone - 如何在 iOS 设备上浏览和播放本地音频文件?

    linux - 什么Linux类相当于CStdioFile

    C++:外部类中内部类的静态实例

    c++ - 带有自定义类的boost变体

    c++ - 从const char到char的无效转换-元音删除

    c++ - 将自定义标准输入传递给C++中的系统调用

    javascript - 将s3.getObject响应转换为File对象

    c++ - golang中的const方法?

    c++ - 一段时间后使线程失败