从文件读取到char数组的首选方法是什么?

时间:2014-04-24 04:51:23

标签: c++ file ifstream istream c++-standard-library

对基本问题表示歉意;我对C ++比较陌生。

我环顾四周,看到了许多关于如何从文件读取到char数组的不同建议。例如,this one创建一个大小为10000的char数组,但这不是最理想的(浪费空间或空间不足)。

用于从文件读取字符串或字符串式序列的最简单,最常用的方法是什么?这是一种常见的操作;必须有一个标准的方法来做到这一点。这个没有单行吗?

1 个答案:

答案 0 :(得分:4)

我会经常使用它(比如当我们在循环中读取数千个文件时!):

std::ifstream file("data.txt"); 
std::string data {std::istreambuf_iterator<char>{file}, 
                  std::istreambuf_iterator<char>{} };

无需使用std::copy(与其他答案一样;现已删除!)。

如果你想要矢量,那么请改用它:

std::vector<char> data {std::istreambuf_iterator<char>{file}, 
                        std::istreambuf_iterator<char>{} };

但是,如果要填充现有的std::vector(或std::string),请使用insert方法(两种类型都具有相同签名的insert方法!):

data.insert(data.end(),                           //insert at end
            std::istreambuf_iterator<char>{file}, //source begin
            std::istreambuf_iterator<char>{} );   //source end

希望有所帮助。