在C ++字符串文字中使用什么是可接受的自定义转义字符

时间:2013-01-20 22:11:50

标签: c++ escaping

我希望以与“\ n”和“\ a”相同的样式在字符串文字中嵌入某些信号。我的程序查看字符串,查看转义字符,然后根据它后面的字符行动。

然而问题是C ++作为编译过程的一部分,使用“\”作为转义字符解析任何东西。另外,我经常使用的C标准库也使用“%”作为转义字符。

因此无法使用“\”和“%”。正斜杠“/”看起来太像“\”了,目前,大多数其他字符要么太常用,要么不会出现逃逸现象。

我的问题是,什么是用作转义字符的最佳字符,它不会与依赖于它们自己的转义字符的常见C ++字符串实用程序发生冲突。在这个意义上,“最好的”会客观地描述在正常的对话和数学中很少使用的角色,并且很容易被识别为一目了然的逃脱。

4 个答案:

答案 0 :(得分:4)

没有理由不能逃避反斜杠(例如\\n)。如果您发现难以输入,请尝试使用C ++ 11中的原始字符串文字:

R"(hello\nfriend\a\b\c\d)"

请注意,括号不是字符串的一部分。如果你的字符串将包含)",你可以在左括号之前放置自己的分隔符,这必须遵循结束的括号:

R"delim(hello\nfriend\a\b)"something)delim"

答案 1 :(得分:1)

我最喜欢的替代逃脱角色是`(反击)。为什么?因为它不常出现在普通文本中,所以C和C ++根本不使用它,它看起来像一个小反斜杠。

答案 2 :(得分:0)

我想你通常可以使用'\',只要你把它作为两个字符保存到字符串中,例如'\'和'n'而不是'\ n'。

答案 3 :(得分:0)

bash使用$将变量插入字符串:

"Hello $name! How are you?"

Windows cmd使用%表示相同的内容:

"Hello %name%! How are you?

C#使用{}进行字符串格式化:

String.Format("Hello {0}! How are you?", name)

任何这些都很容易识别。