[英]How can I replicate compile time hex string interpretation at run time!? c++
在我的代码中,以下行为我提供了执行任务的数据:
const char *key = "\xf1`\xf8\a\\\x9cT\x82z\x18\x5\xb9\xbc\x80\xca\x15";
问题是它在编译时根据我不完全理解的规则进行了转换。 “\x”在字符串中如何工作?
我想要做的是获得相同的结果,但来自与运行时输入的字符串完全相同的字符串。 我已经尝试了很多事情并寻找答案,但没有一个足够匹配以至于我无法申请。
我知道 \x 表示一个十六进制数。 但我不知道编译器 (gcc) 以哪种形式“烘烤”了它。
那`翻译成什么?
"\a" 是否做类似 "\x" 的事情?
这确实是由编译器提供的,但这部分不是标准库的成员。 这意味着您有 3 种方法:
popen
可用)从您的主程序执行它并读取它的输入。 是不是很丑。。。如果直到这里还不清楚,我强烈建议您使用第三种方式;-)
如果您想翻译在运行时作为输入获得的字符串中的“转义”代码,那么您需要自己明确地进行。
一种方法是将输入读入一个字符串。 然后将源字符串中的字符一个一个地复制到新的目标字符串中。 如果你看到一个反斜杠然后你丢弃它,获取下一个字符,如果它是一个x
你可以使用例如std::stoi
将接下来的几个字符转换成它对应的 integer 值,和 append 这个数字到目标字符串(或者使用std::to_string
添加它,或使用 output 字符串流和正常的“输出”运算符<<
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.