簡體   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