c++ - 在 struct dirent 中,文件名可以有非标准字符吗?

标签 c++ character-encoding

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/

相关文章:

node.js - Node Net.Socket 字符编码问题

python BeautifulSoup查找span id名称而不使用string\re方法

php - 哪种 MySQL 排序规则与 PHP 的字符串比较完全匹配?

c++ - 使用 ofstream 写入 txt 文件时强制编码

c++ - 为什么int** ptr在访问ptr[i][j]时不指向与int arr[3][3]相同的地址?

c++ - 为 CustomDraw ListView 设置 EditCtrl 位置

c++ - 在 postOrderDeletion 上调用析构函数时抛出异常

c++ - 使用 std::thread 和良好实践并行化循环

php - 不正确的字符串编码

C++ 重定义头文件 (winsock2.h)