将文件的全部内容读取到标准输出的最短方法是什么?

时间:2014-01-06 22:52:18

标签: c++ c++11

我正在寻找在标准C ++中将文件内容读入std::cout的最佳方法。我不关心格式化任何我想要打印原始内容的东西。最简单的方法是什么?

3 个答案:

答案 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);