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

What is the preferred way to read from a file into a char array?

本文关键字:方式 是什么 数组 文件 读取 char      更新时间:2023-10-16

为基本问题道歉;我对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

希望能有所帮助。