使用getline读取从输入文件到输出文件的一行

时间:2019-06-22 01:43:52

标签: c++

在尝试编译以下代码时遇到错误:

与使用提取或插入运算符相比,有些卡需要使用getline函数。不太确定我在做什么错,但是我知道它一定不是正确的语法。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    string line;
    string filename;

    ifstream inFile;
    ofstream outFile;
    int num;

    line = "No Value";
    filename = "No Value";
    num = -1;


    inFile.open("in1.txt");
    outFile.open("out.txt");
    getline(inFile,outFile);

    return 0;
}

基本上,我只希望它从infile中提取一行,并将其输出到outfile。但是我需要使用getline。

FileIO_2.cpp:24:24: note:   'std::ofstream {aka 
std::basic_ofstream<char>}' is not derived from 
'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>'
  getline(inFile,outFile);

2 个答案:

答案 0 :(得分:1)

对于错误:

更改这部分代码:

getline(inFile,outFile);

对此:

getline(inFile, line); // get the line from "inFile" and output it to the variable "line"
outFile << line; // write "line" variable data to "outFile"
// another way is: outFile.write(line.c_str(), line.size());

getline需要输入文件和输出string变量,而不是输出文件。 在此处阅读有关getline的更多信息:https://en.cppreference.com/w/cpp/string/basic_string/getline

输入您的代码

还有一些未使用的变量,看来您应该使用它们。 filename可能应该用作“输入” /“输出”文件名,也许添加另一个存储另一个文件名的变量会更好。 int num在这种情况下看起来毫无用处。您的代码以以下形式看起来可能会更好:

string line, input_filename, output_filename;
ifstream inFile;
ofstream outFile;

input_filename = "in1.txt";
output_filename = "out.txt";

inFile.open(input_filename);
outFile.open(output_filename);
getline(inFile, line);
outFile << line;

答案 1 :(得分:0)

getline需要一个字符串作为它的第二个参数,但是您已经给了它一个流。

从输入文件读取字符串,然后将字符串写入输出文件。

相关问题