[英]Looking for c++ equivalent for _wfindfirst for char16_t
我有使用char16_t
字符的文件名:
char16_t Text[2560] = u"ThisIsTheFileName.txt";
char16_t const* Filename = Text;
如何检查文件是否已经存在? 我知道我可以使用_wfindfirst()
为wchar_t
这样做。 但我在这里需要char16_t
。
char16_t
是否有与_wfindfirst()
等效的功能?
这样做的背景是我需要使用 Unicode 字符并希望我的代码在 Linux(32 位)以及其他平台(16 位)上工作。
findfirst()
是_wfindfirst()
的对应物。
但是, findfirst()
和_wfindfirst()
都特定于 Windows。 findfirst()
接受 ANSI(过时的旧东西)。 _wfindfirst()
以wchar_t
的形式接受 UTF-16(这与char16_t
不完全相同)。
Linux 上一般不使用 ANSI 和 UTF-16。 findfirst()
/ _wfindfirst()
不包含在 gcc 编译器中。
Linux 使用 UTF-8 作为其 Unicode 格式。 您可以使用access()
检查文件权限,或使用opendir()
/ readdir()
/ closedir()
作为findfirst()
的等效项。
如果您有来自 Windows 的 UTF-16 文件名,您可以将名称转换为 UTF-8,并在 Linux 中使用 UTF-8 名称。 请参阅如何将 UTF-8 std::string 转换为 UTF-16 std::wstring?
考虑在 C++17 或更高版本中使用std::filesystem
。
请注意,Windows 或 Linux 可执行文件是 32 位或 64 位,与字符集没有任何关系。 一些非常古老的系统是 16 位的,您可能不会遇到它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.