【问题标题】:What is the preferred way to read from a file into a char array?从文件读取到 char 数组的首选方法是什么?
【发布时间】:2014-06-09 05:15:03
【问题描述】:
为基本问题道歉;我对 C++ 比较陌生。
我环顾四周,看到了许多关于如何从文件读取到 char 数组的不同建议。例如,this one 创建一个大小为 10000 的 char 数组,但这是次优的(要么浪费空间,要么空间不足)。
从文件读取到字符串或类似字符串的序列的最简单且最常用的方法是什么?这是很常见的操作;必须有一个标准的方法来做到这一点。没有单行本吗?
【问题讨论】:
-
有一个类似的问题here。答案讨论了各种方法及其性能
标签:
c++
file
ifstream
istream
c++-standard-library
【解决方案1】:
我通常会使用它(比如当我们不循环读取数千个文件时!):
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
希望对您有所帮助。