2012-06-01 65 views
0

我正在编写一个C++程序来解决消息解码的常见问题。部分问题需要我得到一堆随机字符,包括'\',并将它们映射到一个键。C++ - 在字符串上转义或禁用反斜杠

我的程序在大多数情况下工作正常,除了当我从字符串中读取'\'等字符时,我显然会得到完全不同的字符表示(例如'\ 0'会产生空字符或'\'当它需要被视为一个角色时简单地逃脱)。

由于我不应该对包含哪些字符键有任何控制,所以我一直在拼命想找到一种方法来将特殊控制字符(如反斜杠)当作字符本身来处理。

我的问题是,这些基本上都是:

  • 有没有办法把所有特殊字符了我的计划范围之内?

  • 有没有办法来覆盖特殊字符的当前有向图定义并将它们定义为别的东西(如使用非常罕见的键的二元图)?

  • 在String类中有一些我不知道的方法,它可以强制读取字符串上的实际字符而不是预定义的常量吗?

我一直在寻找一个解决方案,现在几个小时,但我发现所有可能的修复其他语言。

任何帮助是非常感谢。

+2

“\”是特殊的*只在一个字符串/字符中**文字*** - 不是外部数据读入:它具有*没有固有含义*作为字符串对象的内容!可以使用'@“\ verbatim \ string \”'文字(并且char文字''\\''是一个简单的例子),但是这只会影响源文件中出现的* literal *值。 (这并不排除外部数据源中“\”的特殊含义,而且在某些来源中,例如在Regexp中,仍然有意义)。 – 2012-06-01 21:57:31

+0

您的字符串从哪里来?它是否被硬编码?用户输入?文件IO? – Linuxios

+0

“_我明显得到了完全不同的角色表现_”对你来说这可能很明显,但我不知道这意味着什么。当你读到一个角色时,你会得到一个角色,具体的问题是什么? –

回答

2

如果您从stdin或文件中读取类似"\0"的字符串,它将被视为两个单独的字符:'\\''0'。没有额外的处理,你必须做。

转义字符仅用于字符串/字符文字。也就是说,当你想将某些东西硬编码到源代码中。