0

我有这样的字符串:

315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5

有没有办法一次将它从文件中读取到字符串对象中,记住每 2 个字符都是字节的十六进制表示?即我需要从十六进制转换为字符的读数。

更新
伙计们,请仔细阅读我的要求。
我能够编写转换函数并沿着字符串循环。
但我需要一次将一串十六进制读入一串字符。
没有任何循环。没有手动转换。
cin >> ...some string variable...
谢谢一样的东西。

UPDATE2
想象一下我有字符串"315c4eeaa8b5"。我想写一些类似的东西cin >> string_var并让 string_var 完全包含"'0x31','0x5c','0x4e','0xea','0xa8','0xb5'". 请注意,最后一个是序数std::string。即0x31,0x5c,etc是字符代码。
希望它能让事情更清楚。

4

2 回答 2

1

要么编写代码,要么使用已经存在的东西。如果您使用的是 C++ IO 流,那么我建议您查看Boost.IOStreams库,尤其是它的过滤流概念。您可以使用选项卡扩展2.2.5.2 input_filter教程示例作为十六进制输入过滤器实现的基础。

于 2013-01-14T10:54:25.233 回答
0

您可以将 istream::opeartor>> 与 std::hex 操纵器一起使用以解析为十六进制:

ifstream in("...");
char buffer[3];
vector<char> chars;

while (in.read(buffer, 2))
{
    buffer[2] = '\0';

    char c;
    istringstream(buffer) >> hex >> c;
    chars.push_back(c);
}
于 2013-01-14T10:50:20.610 回答