我有这样的字符串:
315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5
有没有办法立即从文件中读取它到字符串对象中,记住每2个字符是字节的十六进制表示?即我需要一个从十六进制转换为char的读数。
更新
伙计们,请仔细阅读我的要求
我能够编写转换函数并沿着字符串循环
但是我需要将一串十六进制的字符串读入一串字符一次。
没有任何循环。不用手转换。
类似cin >> ...some string variable...
的东西
感谢。
UPDATE2
想象一下,我有字符串"315c4eeaa8b5"
。我想写一些类似cin >> string_var
的内容,并获得完全包含"'0x31','0x5c','0x4e','0xea','0xa8','0xb5'"
的string_var。请注意,这最后是一个序数std::string
。即0x31,0x5c,etc
是字符代码
希望它让事情更清楚。
答案 0 :(得分:1)
要么你编写代码,要么使用已经退出的东西。如果您正在使用C ++ IO流,那么我建议您查看Boost.IOStreams库,尤其是Filtering Streams概念。您可以使用展开2.2.5.2 input_filter教程示例的选项卡作为十六进制输入过滤器实现的基础。
答案 1 :(得分: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);
}