使用流从文件中读取新行并写入 C++ 中的另一个文件。不读新行

reading new line from file and writing to another file in C++ using streams. not reading new line

我正在用 C++ 读取 IO 流并有以下代码

int main() {
     
    fstream output_file;
    output_file.open("cout.txt", ios::out);
    fstream input_file;
    input_file.open("cin.txt", ios::in);

    // backup existing stream buffers 
    streambuf* cin_old_streambuf = cin.rdbuf();
    streambuf* cout_old_streambuf = cout.rdbuf();

    // Get output stream buffer of file and redirect to cout
    streambuf* output_file_streambuf = output_file.rdbuf();
    cout.rdbuf(output_file_streambuf);

    // Get input stream buffer of file and redirect to cin
    streambuf* input_file_streambuf = input_file.rdbuf();
    cin.rdbuf(input_file_streambuf);
    

    /* What ever you do with cout will write to file. */
    string line;
    getline(cin, line);
    cout << line;
    getline(cin, line);
    cout << line;
    getline(cin, line);
    cout << line;
    getline(cin, line);
    cout << line;
}

我的输入文件cin.txt

My name is 
ravi
My age is 
45

输出文件cout.txt

My name israviMy age is 45

我的问题是为什么程序不读取输入中的 \n。我的理解是 getline 读取换行符。我期待输出文件类似于输入文件。请帮助我对 main

有什么改变

虽然 getline(cin, line); 确实会逐行从您的其他文件中检索输入,但如果您在使用 cout << line; 打印时想要换行,您仍应遵循添加 "\n" 的标准或 endl;cout 行的末尾。

代码的最后一部分应如下所示。

getline(cin, line);
cout << line << endl;
getline(cin, line);
cout << line << endl;
getline(cin, line);
cout << line << endl;
getline(cin, line);
cout << line << endl;