好吧,我正在类里面阅读我的文件,当我执行以下操作时,它给了我错误。请提出任何解决方案。
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];
执行:
从流中获取整数并设置到元素中
根据操作的成功设置 i/o 状态
返回ostream&
i++;
前进到下一个要读取的元素;
while( [[returned ostream&]] )
将 ostream 转换为 bool 值;这会检查 ostream 状态(基于操作成功的 i/o 状态)和 eof 位,如果两者都正常则返回 true。
while 计算结果为真并读入下一个索引。
在循环结束时,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/