繁体   English   中英

为 char16_t 寻找 _wfindfirst 的 c++ 等效项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM