为基本问题道歉;我对C++还比较陌生。
我环顾四周,看到了许多关于如何从文件读取到char数组的不同建议。例如,这个创建了一个大小为10000的char数组,但这是次优的(要么浪费了空间,要么没有足够的空间)。
从文件读取字符串或类似字符串的序列的最简单、最常用的方法是什么?这是一种常见的操作;必须有一个标准的方法来做这件事。没有一条班轮吗?
我通常会使用它(比如当我们而不是在循环中读取数千个文件时!):
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
希望能有所帮助。