2.2.3 转义序列
字符前的符号\告诉编译器:\之后的字符具有特殊含义,不能沿用其字面含义。这样的一个字符序列称为转义序列。转义序列肯定由两个字符构成,而且两个字符之间没有空格。C++(www.cppentry.com)定义了几个转义序列。
如果希望在一个字符串常量中插入反斜杠\,或者插入双引号",则必须使用\"来转变"的原有功能(结束一个字符串常量),或者使用\\来转变\的原有功能(转义)。\\向编译器表明你需要一个真正的反斜杠\,而不是一个转义序列。\"表明需要一个真正的双引号,而不是结束一个字符串常量。
如果在字符串常量中出现未定义的转义序列(比如\z),有的编译器会返回一个z,有的则会报错。ANSI标准规定,对于未定义的转义序列来说,它的行为是"未定义"的。所以,编译器可以采用其设计者觉得方便的任何方式处理它。其后果是,如果在代码中使用了未定义的转义序列,就失去了"可移植性"。因此,不要使用任何未定义的转义序列。下面列出了C++(www.cppentry.com)定义的一部分转义序列:
换行符\n
水平制表符\t
响铃符\a
反斜杠\\
双引号\"
要在输出中插入一个空行,可以单独输出一个\n换行符,如下所示:
- cout << "\n";
输出空行的另一种方式是使用endl,它的含义与"\n"相同。所以,还能像下面这样输出一个空行: - cout << endl;
虽然"\n"和endl含义相同,但用法稍有区别:\n必须放到双引号内,endl则不能。
\n和endl该如何选择呢?一个较好的依据是:如果\n可以放到一个较长的字符串的末尾,就像下面这样使用\n:
- cout << "Fuel efficiency is "
- << mpg << " miles per gallon\n";
而如果需要单独使用一个"\n",就改为使用endl,如下所示: - cout << "You entered " << number << endl;
在输出中开始新行
要在输出中换行,可将\n包含到引号字符串内,如下所示:
- cout << "You have definitely won\n"
- << "one of the following prizes:\n";
记住,\n要作为两个字符来输入,两个字符之间不能有空格。
另一种方法是通过endl来换行,如下所示:
- cout << "You have definitely won" << endl
- << "one of the following prizes:" << endl;