#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;
}
在这个简单的程序,我想不会数数上限元音在文件TEMP.TXT的数量。 不过,我得到的错误:
IOS :: IOS(IOS&)是不是在功能fstream的访问:: fstream的(fstream的和)
相反,在功能打开文件本身做这项工作。 为什么会这样呢? 非常感谢
注意:
如何通过一个函数的参数使用的fstream(特别是ofstream的)
在这里,它说,它应该工作,我正在尝试的方式。
干草堆
一个fstream
对象是不可拷贝。 按引用传递,而不是: fstream&
:
void vowel(fstream& a)
请注意,可以避免调用open()
提供相同的参数的构造器:
fstream a("temp.txt", ios::in);
不使用while(!a.eof())
立即检查读取操作的结果。 在eof()
当试图读取超出文件中的最后一个字符将只设置。 这意味着!a.eof()
为真当上一次调用get(ch)
读取文件的最后一个字符,但后续get(ch)
将失败,并设置EOF但代码不会注意到,直到故障它已处理后ch
再度即使读取失败。
例如正确的结构:
while (a.get(ch)) {
你需要传递fstream
参考 :
void vowel(fstream& a){ .... }
// ^ here!
试试这个。 而不是发送文件计数线的元音。
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
int vowels=0;
void vowel(string a){
char ch;
int ctr = 0;
int temp=0;
for(temp=0,temp<a.length();temp++){
ch=a.at(temp);
if (ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U'){
cout << ch;
ctr++;
}
}
vowels+=ctr;
}
main(){
fstream a;
a.open("temp.txt", ios::in);
string temp;
while(getline(a,temp))
{
vowel(temp);
function2(temp);
function3(temp);
... so on for more then one functions.
}
vowel(a);
return 0;
}
如果你想通过文件,然后使用上述ANS(按引用传递fstream的)。
有很多事情可以做,以解决您的问题,其中2 在声明ifstream的在全球范围内 ,并在全球宣布你的方法也。
C ++
#import<stuff>
//other imports here
ifsteam in_stream;
void method_Name(ifstream in_stream,string user_input);
int void main(){
string user_input;
instream.open("dogs.txt");//you can open your file here or in the method
//Code here
cin>> user_input;
method_Name(user_input);
return 0;
}
void method_Name(){
//or even better opening file here
//do stuff
}
你的情况,你也可以使用“&” ifstream的经过这么像元音(ifstream的&A)将其传递的方法;
我在我的一些程序来打开.csv文件,并从中读取没有遇到的问题所使用的第一个实例。 顺便说一定要检查文件是否使用类似居然开...
if (in_stream.fail( )){//Checking to see if file failed to open
cout << "Input file opening failed.\n";
exit(EXIT_FAILURE);
}