如何重定向cin和cout到文件? [英] How to redirect cin and cout to files?
本文介绍了如何重定向cin和cout到文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何将 cin
重定向到 in.txt
和 cout
到 out.txt
?
推荐答案
你想做什么的例子。阅读注释以了解代码中的每一行。我已经测试它在我的电脑上用gcc 4.6.1;它工作正常。
Here is an working example of what you want to do. Read the comments to know what each line in the code does. I've tested it on my pc with gcc 4.6.1; it works fine.
#include <iostream>
#include <fstream>
#include <string>
void f()
{
std::string line;
while(std::getline(std::cin, line)) //input from the file in.txt
{
std::cout << line << "\n"; //output to the file out.txt
}
}
int main()
{
std::ifstream in("in.txt");
std::streambuf *cinbuf = std::cin.rdbuf(); //save old buf
std::cin.rdbuf(in.rdbuf()); //redirect std::cin to in.txt!
std::ofstream out("out.txt");
std::streambuf *coutbuf = std::cout.rdbuf(); //save old buf
std::cout.rdbuf(out.rdbuf()); //redirect std::cout to out.txt!
std::string word;
std::cin >> word; //input from the file in.txt
std::cout << word << " "; //output to the file out.txt
f(); //call function
std::cin.rdbuf(cinbuf); //reset to standard input again
std::cout.rdbuf(coutbuf); //reset to standard output again
std::cin >> word; //input from the standard input
std::cout << word; //output to the standard input
}
您可以保存和重定向,只需一行:
auto cinbuf = std::cin.rdbuf(in.rdbuf()); //save and redirect
这里 std :: cin.rdbuf rdbuf())
将 std :: cin的
设置为 in.rdbuf()
然后返回与 std :: cin
相关联的旧缓冲区。同样可以使用 std :: cout
—或任何流。
Here std::cin.rdbuf(in.rdbuf())
sets std::cin's
buffer to in.rdbuf()
and then returns the old buffer associated with std::cin
. The very same can be done with std::cout
— or any stream for that matter.
希望有帮助。
这篇关于如何重定向cin和cout到文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文