【问题标题】:How can I escape characters using ASCII 3-letter codes?如何使用 ASCII 3 字母代码转义字符?
【发布时间】:2014-03-29 21:30:47
【问题描述】:

我想要类似的东西

 string magic(char c);

所以当我这样做时

 std::cout << magic(c);

我明白了:

  • 用于打印 ASCII 字符的字符本身;
  • 其他 ASCII 字符的 2/3 个字母的 ASCII 代码(例如 "NUL""BEL""LF" 等)
  • 当 c 为非 ASCII(第 8 位开启)时任何合理的值。

我应该使用什么? (不一定是函数。)

【问题讨论】:

  • 如果您希望输出为可打印的 ASCII,您至少需要将一个可打印的 ASCII 字符修改/转义为两个或三个可打印的 ASCII 字符。除非你想要模棱两可。
  • 你想让它在任何地方都能工作吗(包括 ebcdic 计算机)?
  • @einpoklum:为什么不自己写呢?只要它只是 ASCII(不是 Unicode 的东西、EBCDIC 或者更奇怪的东西),控制字符的数量就很小。只是一些 if-else 和一组特殊名称,例如“BEL”...
  • @einpoklum:我认为没有任何 lib 函数。
  • 你能用一个简单的查找表吗? const char *magic[] = {"NUL", "SOH" ... "a", "b" ... "0xFE", "0xFF" };.

标签: c++ c escaping ascii non-printing-characters


【解决方案1】:

结合@Pter 和@deviantfan 的cmets:

显然没有通用的库功能可以实现这一点。一个简单的实现将涉及低 ASCII 值的查找表,以及第 8 位的检查;一个更简单的实现将涉及所有 256 个值的查找表。

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多