如何输入十六进制值而不是字符作为boost :: asio :: buffer的输入

时间:2012-09-03 12:24:56

标签: c++ c char boost-asio cin

我无法为以下场景找到一个好的解决方案:

write 函数接受一个 const char ,它通过 cin.get(ch)通过调用<作为用户输入给出EM>写(CH)。 ch是 char

while (c.active()) 
{
 char ch;
 cin.get(ch); // blocking wait for standard input

 if (ch == 3) // ctrl-C to end program
   break;
 c.write(ch);
}

这样可以正常工作,但我想修改它,以便可以输入如下内容:“0A00CD88”或“0A 00 CD 88”并将其用作 write 的输入,它使用它作为 boost :: asio :: buffer 的输入。

为了做到这一点,我可以使用 C / C ++ 提升

感谢任何分享这方面知识的人!

2 个答案:

答案 0 :(得分:2)

下一个代码将解决您的第一个场景(没有空格)

int x;
std::cin >> std::hex >> x;

Use hexadecimal base

答案 1 :(得分:2)

That is your solution:

只需替换

std::string hex_chars("E8 48 D8 FF FF 8B 0D");

std::string hex_chars;
std::getline(std::cin, hex_chars);

P.S。我希望我能正确理解你的问题:)