我正在寻找在标准C ++中将文件内容读入std::cout
的最佳方法。我不关心格式化任何我想要打印原始内容的东西。最简单的方法是什么?
答案 0 :(得分:15)
一个(相当)短的可能性是这样的:
int main(int argc, char **argv) {
std::ifstream in(argv[1]); // error checking omitted for now
std::cout << in.rdbuf();
}
如果文件很长,这不是最有效的,但对于你通常想要在stdout
上显示的几乎任何东西,它通常都会很好。如果您打算将输出提供给其他程序,并希望更快地处理大型文件,您可以执行以下操作:
#include <iostream>
#include <fstream>
int main(int argc, char **argv) {
std::ifstream in(argv[1], std::ios::binary);
static char buffer[1024*1024*8];
while (in.read(buffer, sizeof(buffer)), in.gcount()!=0)
std::cout.write(buffer, in.gcount());
}
答案 1 :(得分:10)
这是一个完整的程序:
#include <fstream>
#include <iostream>
int main(int ac, char* av[]) {
std::cout << std::ifstream(ac == 1? "foo": av[1]).rdbuf();
}
答案 2 :(得分:1)
直接使用std::filebuf
:
std::cout << std::filebuf{}.open("in.txt", std::ios_base::in);