我有包含不可打印/控制字符的字符串 -
\222!,\306G6qh\341Pp\210;\241\2619}\222+"\340\315\364ƅ\344\264\215\230\3130ZG!\214\344y\307W(\254Y^\213F\234oz\263V^\274\2453 L
此字符串的值来自函数,并且每次运行程序时都不同。
我有什么方法printf
/ cout
这个字符串?
答案 0 :(得分:1)
只需将它们打印为十六进制,就像这样[使用反馈中的EDIT]:
#include <ctype.h>
for( char c : str )
if (isprint(c))
if (c = '\\')
std::cout << "\\\\";
else
std::cout << c;
else
std::cout << "\0x" << std::hex
<< static_cast<int>(static_cast<unsigned char>(c));
答案 1 :(得分:0)
循环遍历字符串,对于每个字符,如果它在您考虑的范围内且可打印&#34;,则打印它。否则,输出您选择的一些替代表示;也许是一个反斜杠后跟一个三位八进制数字,表示整数形式的字符值。