是否可以在char中返回“怪异”字符?

时间:2013-02-25 17:12:28

标签: c++ char

我想知道是否可能返回“怪异”字符,或者更重要的是对语言重要的字符
例如: \ ; “
我想知道,因为我需要通过一个检查文本键的unicode值的函数返回它们,然后通过它的数字返回字符,我也需要它们。
我得到一个356 |错误:错过终止'字符
第356行看起来如下

return '\';

想法?

5 个答案:

答案 0 :(得分:5)

反斜杠是特殊字符的转义符。如果你想要一个文字反斜杠,你必须用另一个反斜杠来逃避它。尝试:

return '\\';

答案 1 :(得分:4)

这里唯一的问题是反斜杠用于转义文字中的字符。例如,\n是一个新行,\t是一个水平制表符。在您的情况下,编译器看到\'并认为您的意思是'字符(这样您就可以拥有'字符,如下所示:'\'')。你只需要逃避反斜杠:

return '\\';

尽管这看起来像一个字符文字,里面有两个字符,但事实并非如此。 \\是一个表示单个反斜杠的转义序列。

同样,要返回',您可以这样做:

return '\'';

表7给出了可用转义序列的列表:

enter image description here

您可以使用包含执行字符集中任何字符的字符文字,结果char将包含该字符的值。但是,如果该值不适合char,则它将具有实现定义的值。

答案 2 :(得分:1)

任何角色都可以退回。

然而对于其中一些人,你必须使用backslash\来逃避它。

因此,对于返回反斜杠,您必须返回:

return '\\';

答案 3 :(得分:0)

使用'\\'来获得简单的反斜杠。

在C中,使用反斜杠表示以下字符:

  • \ a或\ A:铃声
  • \ b或\ B:退格
  • \ f或\ F:A formfeed
  • \ n或\ N:新行
  • \ r或\ R:回车
  • \ t或\ T:水平制表符
  • \ v或\ V:垂直标签
  • \ xhh或\ Xhh:十六进制位模式
  • \ ooo:八进制位模式
  • \ 0:空字符
  • \“:”字符
  • \':'character
  • \\:反斜杠(\)

普通的反斜杠会混淆系统,因为它希望字符跟随它。因此,你需要“逃避”它。八进制/十六进制位模式一开始可能看起来不太有用,但它们允许您使用ANSI escape codes

如果反斜杠后面的字符没有指定合法的转义序列,如上所示,结果是实现定义的,但通常字面意思是反斜杠后面的字符,就好像转义不存在一样。

答案 4 :(得分:0)

如果你必须多次返回这些字符(“,',\,{,]等等),你应该编写一个逃避该字符的函数。我写了一次该函数,它是:

function  EscapeSpecialChars (_data) {
            try {
                if (!GUI_HELPER.NOU(_data)) {
                    return _data;
                }
                if (typeof (_data) != typeof (Array)) {
                    return _data;
                }
                while (_data.indexOf("
") > 0) {
                    _data = _data.replace("
", "");
                }
                while (_data.indexOf("\n") > 0) {
                    _data = _data.replace("\n", "\\n");
                }
                while (_data.indexOf("\r") > 0) {
                    _data = _data.replace("\r", "\\r");
                }
                while (_data.indexOf("\t") > 0) {
                    _data = _data.replace("\t", "\\t");
                }
                while (_data.indexOf("\b") > 0) {
                    _data = _data.replace("\b", "\\b");
                }
                while (_data.indexOf("\f") > 0) {
                    _data = _data.replace("\f", "\\f");
                }
                return _data;
            } catch (err) {
               alert(err);
            }

        },

然后像这样使用它:

return EscapeSpecialChars("\'"{[}]");

你应该改进这个功能。它对我有用,但并没有逃脱所有特殊角色。