转义序列 \f - 换页符 - 它到底是什么?

83

\f 被称为换页符。 \t 是制表符,\a 是蜂鸣声,\n 是换行符。那么什么是换页符 - \f?下面的程序:

#include <iostream>
int main()
{
   std::cout << "hello\fgoodbye" << std::endl;  
}

在一行中打印hello,然后是一个女性符号(一个倒置的神圣手榴弹:),最后是goodbye


在 GNOME 终端和 xterm 中,它会输出一个换行符加空格。isspace('\f') 对于您而言是否返回 true? - Fred Foo
1
也许当发送到一个非常老的打印机时,\f会强制执行一个换页符? - jrbjazz
17
你在哪个厌恶女性的平台上? - Fred Foo
有趣的是,如果你在Linux中使用pdftotext将一个PDF文件转换成文本,你会发现新页面用 \f 来标记。 - Andrew
13
既然它颠倒了,那它是不是一颗邪恶的手榴弹? - Michael M
显示剩余3条评论
6个回答

52

它跳到下一页的开头。(主要适用于输出设备为打印机而不是VDU的终端。)


2
对我来说可以。也许你的终端有些问题。 - CB Bailey
55
请检查您的声学耦合器是否正确安装,并确保您的打印轮对准正确。 - Tim Robinson
6
@Tim Robinson,我的大脑正在想象我已经有近20年没有听到的声音。非常感谢你:-( - Roddy
7
VDU是“可视显示器”的意思,例如显示器。 - colidyre

39

来源于维基页面

12(换页符,\f,^L),用于使打印机将纸张弹出到下一页顶部或使视频终端清除屏幕。

更多细节请参见此处

看起来这个符号现在已经相当过时了,并且它的处理方式可能取决于实现。至少对我来说,你的代码在以下输出中给出(xcode gcc 4.2,gdb控制台):

hello
    goodbye

8
这句话的意思是,它的处理方式取决于接收它的应用程序/设备,而不是C++程序本身。C++程序只需将其写入相应的流中即可。 - Fred Foo
它并不是真正过时的,因为仍然存在一些情况下你需要直接向打印机写入(扩展) ASCII 码,例如使用收据打印机时。但在终端中你不需要使用它。 - Andrea

17
如果你在编写面向20世纪80年代风格打印机的程序,那么它将会弹出纸张并开始新一页。但是在现代IT技术中,你几乎肯定不需要这样做。
相关链接: http://en.wikipedia.org/wiki/Form_feed

5
到目前为止,^L表单前缀仍被用作纯文本文件(如计算机编程语言的源代码)中的节分隔符。当一个文本文件变得很长而前568行是一种东西,接下来的729行是另一种东西时,通常会在第569行开头放置^L表单前缀字符,通常将^L表单前缀字符放在自己的一行上。有时,在这个节分隔方案中,^K垂直制表符和^L一起使用,^K用于分隔次要部分,^L用于分隔主要部分。 - Andreas ZUERCHER

10

4

-1

这个程序会在换行后,在第一行的末尾添加空格,以便在第二行开始

输出结果

Hello
     Goodbye

这并不适用于\f。它描述了垂直制表符,例如\v(不确定C++是否有此功能)。在终端或其他地方,换页符(下一页)可能会以这种方式解释。另请参见CB Bailey的答案 - colidyre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接