我刚刚遇到了这个“问题”:有没有一种聪明的方法可以在字符串中插入文件结尾(ASCII 0)字符?
我所说的“智能”是指比
let s = "foo" ^ (String.make 1 (Char.chr 0))
let s = "foo\000"
Run Code Online (Sandbox Code Playgroud)
也就是说,这反映了我们添加的是 EOF,而不是“ascii 值为 0 的神秘字符”。
编辑:嗯...确实我在搞乱 eof 作为一个字符。但无论如何,在 C 中你可以有
#include <stdio.h>
int main(void)
{
char a = getchar();
if (a = EOF)
printf("eof");
else
printf("not eof");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您可以在其中测试 char 是否是 EOF (并且(int) EOF
是-1
,而不是0
我想的那样)。同样,您可以将 char 设置为 EOF 等。
我的问题是: ocaml 中是否有可能有类似的东西?
正如 @melpomene 所说,没有 EOF 字符,并且 '\000' 实际上只是一个字符。所以据我所知,你的问题没有真正的答案。
您可以为仅由 NUL 字符组成的字符串定义自己的名称(我们过去这么称呼它):
let eof = "\000"
Run Code Online (Sandbox Code Playgroud)
那么你的函数看起来像这样:
let add_eof s = s ^ eof
Run Code Online (Sandbox Code Playgroud)