【发布时间】:2021-08-02 01:51:19
【问题描述】:
我正在尝试将包含字节的文件读入十六进制字符串。
std::ifstream infile("data.txt", std::ios_base::binary);
int length = 10;
char char_arr[length];
for (int i=0; i<length; i++)
{
infile.get(char_arr[i]);
}
std::string hex_data(char_arr);
但是hex_data 看起来不像一个十六进制字符串。有没有办法在读取过程中将字节转换为十六进制字符串?
【问题讨论】:
-
请显示输入输出。
-
您正在使用的
std::string构造函数需要 null 终止char数组。 -
int length = 10; char char_arr[length];不是标准 C++,请参阅 Why aren't variable-length arrays part of the C++ standard?。要么使lengthconst,要么使用new[]或更好的std::vector。 -
@AndreasWenzel 仅当您使用仅采用
char*本身的构造函数时。还有另一个接受长度的构造函数 -
@drescherjm 输入文件是二进制的,因此甚至可能没有任何“行”可以从中读取。但是,当然,有一些方法可以将二进制数据直接读入
std::string。但在这种情况下,这是没有实际意义的。