在 struct dirent
中,成员 d_name
可以包含 unicode 而不是 ascii 的字符吗?我测试过它可以与“é”一起使用,但我不确定那是否是因为“é”在 ascii 中。 d_name
是什么类型,如果是 char
那么我就完蛋了,如果是 wchar_t
我就得救了。
最佳答案
Open Group Base Specifications 声明 struct dirent
应具有以下未指定大小的成员:
char d_name[];
在符合规范的实现中,它是 char[]
类型,但这并不一定意味着它不能存储 Unicode 字符;该规范不要求支持多字符集(或可移植字符集之外的字符),但也不禁止('é'
顺便说一句,它不在 ASCII 中)。
实际上,支持的字符集取决于您的语言环境。在 C 术语中,d_name
中的字符串存储为“多字节”字符。
关于c++ - 在 struct dirent 中,文件名可以有非标准字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011510/