如何在c++中打印/cout不可打印/控制字符

How to print/cout unprintable/control characters in c++?

本文关键字:打印 控制字符 cout c++      更新时间:2023-10-16

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

222!,306G6qh341Pp210;2412619}222+"340315364ƅ3442642152303130ZG!214344y307W(254Y^213F234oz263V^2742453 L

这个字符串的值来自一个函数,每次运行程序时都会有所不同。

有什么方法可以printf/cout这个字符串吗?

只需将它们打印为十六进制,类似于[通过反馈编辑]:

#include <ctype.h>
for( char c : str )
    if (isprint(c))
        if (c = '')
            std::cout << "\\";
        else
            std::cout << c;
    else
        std::cout << "x" << std::hex
            << static_cast<int>(static_cast<unsigned char>(c));

循环字符串,对于每个字符,如果它在您认为"可打印"的范围内,则打印它。否则,输出您选择的一些替代表示;可能是一个反斜杠,后面跟着一个三位数的八进制数字,以整数形式表示字符的值。