首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >寻找c++等价于_wfindfirst的char16_t

寻找c++等价于_wfindfirst的char16_t
EN

Stack Overflow用户
提问于 2022-07-18 14:03:55
回答 1查看 36关注 0票数 0

我有使用char16_t字符的文件名:

代码语言:javascript
复制
char16_t Text[2560] = u"ThisIsTheFileName.txt";
char16_t const* Filename = Text;

如何检查文件是否已经存在?我知道,对于使用wchar_t_wfindfirst(),我可以这样做。但我需要char16_t在这里。

是否有一个与_wfindfirst() char16_t**?**的等价的函数?

这方面的背景是,我需要处理Unicode字符,并希望我的代码能够在Linux (32位)以及其他平台(16位)上工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-18 16:05:22

findfirst()是与_wfindfirst()相对应的。

但是,findfirst()_wfindfirst()都是特定于Windows的。findfirst()接受ANSI (过时的遗留东西)。_wfindfirst()wchar_t的形式接受UTF-16 (这与char16_t不完全一样)。

ANSI和UTF-16通常不在Linux上使用。gcc编译器中不包括findfirst()/_wfindfirst()

Linux使用UTF-8作为Unicode格式。您可以使用opendir()/readdir()/closedir()检查文件权限,也可以使用access()等效于findfirst()

如果您有来自Windows的UTF-16文件名,则可以将名称转换为UTF-8,并在Linux中使用UTF-8名称。请参阅How to convert UTF-8 std::string to UTF-16 std::wstring?

考虑在std::filesystem或更高版本中使用C++17。

请注意,Windows或Linux可执行文件是32位或64位,这与字符集无关。有些非常老的系统是16位的,你可能不会碰到它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73023640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档