对基本问题表示歉意;我对C ++比较陌生。
我环顾四周,看到了许多关于如何从文件读取到char数组的不同建议。例如,this one创建一个大小为10000的char数组,但这不是最理想的(浪费空间或空间不足)。
用于从文件读取字符串或字符串式序列的最简单,最常用的方法是什么?这是一种常见的操作;必须有一个标准的方法来做到这一点。这个没有单行吗?
答案 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
希望有所帮助。