使用流从文件中读取新行并写入 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;
我正在用 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;