在Ruby中,是否有一种跨平台的方式将EOF
符号写入字符串。在*nix中,我相信该符号是^D
,但在Windows中是^Z
,所以我想问一下。
在Ruby中,是否有一种跨平台的方式将EOF
符号写入字符串。在*nix中,我相信该符号是^D
,但在Windows中是^Z
,所以我想问一下。
EOF不是一个字符,而是一种状态。终端使用控制字符来表示这种状态(C-d)。不存在“读取EOF字符”的情况,写入也是同理。如果你要写入文件,完成后只需关闭即可。请参阅此邮件列表帖子:
听起来你可能认为EOF是一种特殊的带内字符值,用于标记文件结尾。更好的想法是将其视为带外哨兵值。在C中,EOF通常为-1,并且相关API指定整数返回值,以确保EOF永远不会与有效的带内值混淆。
这里有更多证据(在Unix上执行):
$ cat > file
hello^V^Dworld
^D
$ cat file
helloworld
输入^V^D会将控制字符D直接插入文件中。在输入world并按下回车键后,^D会关闭管道。文件最终长度为12字节,其中10个字母,另外两个是^D和换行符。最后的^D不会出现在文件中,它只是被终端/Shell用来关闭管道。