如何检测字符串中的转义

SH.*_*x90 1 c++ c++11

我正在尝试这样做:

#include <iostream>

std::string message = "Hello\r\"world\"";

int main() {
    if (message[5] == '\\') {
        switch (message[6]) {
            case 'r':
                std::cout << "\\r escape..." << std::endl;
            break;
            case '"':
                std::cout << "\" escape..." << std::endl;
            break;
        }
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道逻辑上是正确的,但是如果你理解我想要做什么,你会注意到我想知道字符串是否存在转义.如果角色是逃脱,请执行上面看到的(开关).

那可能吗?谢谢.

Mik*_*sen 5

这是不可能的.在运行时,字符串中将包含以下字节:

  1. H
  2. e
  3. l
  4. l
  5. o
  6. CR (ASCII字符13)
  7. " (ASCII字符34)
  8. w
  9. o
  10. r
  11. l
  12. d
  13. " (ASCII字符34)

事实上,这个字符串常量恰好是通过转义序列创建的,这完全是无关紧要的,因为这只是编译器的简写来创建上面的字节.否则内存中存在反斜杠,因此在运行时无法检测这些转义序列.

当然,您可以查看字节6是13还是字节7是34.