我有一个以 null 结尾的 UTF-8 字符串const char*
。我想知道这个字符串的第一个字母是否是一个单独的字母a
。以下代码
bool f(const char* s) {
return s[0] == 'a';
}
是错误的,因为字符串的第一个字母(字素簇)可能是à
- 由 2 个 unicode 标量值组成:a
和`
. 所以这个非常简单的问题似乎很难回答,除非你知道字素簇是如何制作的。
尽管如此,许多库解析 UTF-8 文件(例如 YAML 文件),因此应该能够回答这类问题。但是这些库似乎并不依赖于 Unicode 库。
所以我的问题是:
如何编写检查字符串是否以字母开头的代码
a
?假设第一个问题没有简单的答案,解析器(如 YAML 解析器)如何在无法回答此类问题的情况下设法解析文件?