Dra*_*law 10 c++ fstream function
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
void vowel(fstream a){
char ch;
int ctr = 0;
while(!a.eof()){
a.get(ch);
if (ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U'){
cout << ch;
ctr++;
}
}
cout << "Number of Vowels: " << ctr;
}
main(){
fstream a;
a.open("temp.txt", ios::in);
vowel(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这个简单的程序中,我试着计算temp.txt文件中的元音数量.但是,我收到错误:
在函数fstream :: fstream(fstream&)中无法访问ios :: ios(ios&)
而是在函数本身中打开文件来完成工作.为什么会这样?非常感谢
注意:
在这里它说,它应该按我尝试的方式工作.
干草堆
hmj*_*mjd 12
一个fstream对象是不可拷贝.通过引用代替fstream&:
void vowel(fstream& a)
Run Code Online (Sandbox Code Playgroud)
请注意,您可以open()通过向构造函数提供相同的参数来避免调用:
fstream a("temp.txt", ios::in);
Run Code Online (Sandbox Code Playgroud)
并且不要使用while(!a.eof()),请立即检查读取操作的结果.在eof()当试图读取超出文件中的最后一个字符将只设置.这意味着!a.eof()当前一次调用get(ch)从文件中读取最后一个字符时将是真的,但后续get(ch)将失败并设置eof但是代码将不会注意到失败,直到它ch再次处理,即使读取失败.
示例正确结构:
while (a.get(ch)) {
Run Code Online (Sandbox Code Playgroud)