为什么我不能将getline()与ifstream对象一起使用?

问题描述 投票:0回答:1

我想读取文件并写入副本文件。但是当我使用getline()函数时,在主函数中可以,但在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;
    }
}
c++ fstream
1个回答
1
投票
void Writefile(const ifstream & inF,ofstream & outF,const string &str){

应该是

void Writefile(ifstream & inF,ofstream & outF,const string &str){

从概念上讲,流对象在您对其进行读写时会发生变化,因此请不要对流对象使用const引用。

© www.soinside.com 2019 - 2024. All rights reserved.