如何在c ++中打印/ cout unprintable / control字符?

时间:2014-09-09 12:36:42

标签: c++

我有包含不可打印/控制字符的字符串 -

\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这个字符串?

2 个答案:

答案 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;,则打印它。否则,输出您选择的一些替代表示;也许是一个反斜杠后跟一个三位八进制数字,表示整数形式的字符值。