为什么我不能将 getline() 与 ifstream 对象一起使用?
Why I could not use getline() with a ifstream object?
我想读取一个文件并写入一个副本file.But 当我使用getline() 函数时,在main 函数中可以,但在Writefile 函数中不行。这让我很困惑。
参数相同:
getline(ifstream object,string)
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
void Writefile(const ifstream & inF,ofstream & outF,const string &str);
int main(){
ifstream inFile;
inFile.open("Summary");
ofstream outFile;
string name = "SummaryCpy.txt";
Writefile(inFile,outFile,name);
string str22;
getline(inFile,str22); //////good//////////
return 0;
}
void Writefile(const ifstream & inF,ofstream & outF,const string &str){
outF.open(str);
if(! outF.is_open()){
cout << "open file "<< str << " Erro" << endl;
exit(EXIT_FAILURE);
}
string str1;
while (inF.good()) {
getline(inF,str1); //////bad/////
outF << str1 << endl;
}
}
void Writefile(const ifstream & inF,ofstream & outF,const string &str){
应该是
void Writefile(ifstream & inF,ofstream & outF,const string &str){
从概念上讲,流对象在您从中读取或写入时会发生变化,因此不要对流对象使用 const 引用。
我想读取一个文件并写入一个副本file.But 当我使用getline() 函数时,在main 函数中可以,但在Writefile 函数中不行。这让我很困惑。
参数相同:
getline(ifstream object,string)
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
void Writefile(const ifstream & inF,ofstream & outF,const string &str);
int main(){
ifstream inFile;
inFile.open("Summary");
ofstream outFile;
string name = "SummaryCpy.txt";
Writefile(inFile,outFile,name);
string str22;
getline(inFile,str22); //////good//////////
return 0;
}
void Writefile(const ifstream & inF,ofstream & outF,const string &str){
outF.open(str);
if(! outF.is_open()){
cout << "open file "<< str << " Erro" << endl;
exit(EXIT_FAILURE);
}
string str1;
while (inF.good()) {
getline(inF,str1); //////bad/////
outF << str1 << endl;
}
}
void Writefile(const ifstream & inF,ofstream & outF,const string &str){
应该是
void Writefile(ifstream & inF,ofstream & outF,const string &str){
从概念上讲,流对象在您从中读取或写入时会发生变化,因此不要对流对象使用 const 引用。