Windows 非 ASCII 文件路径
Windows non-ASCII file paths
我正在做一些实验来更好地了解转换,并且有以下代码无法按预期工作
std::wstring inScriptPath = "non-ASCII file name"
using convert_type = std::codecvt_utf8_utf16<wchar_t>;
std::wstring_convert<convert_type, wchar_t> converter;
std::string my_path = converter.to_bytes(inScriptPath);
std::fstream myfile;
myfile.open(my_path.c_str(), ios::in); //open the file
if (myfile.is_open()) {
std::cout << "Openning file for reading with fstream" << std::endl;
myfile.close();
}
FILE * pFile;
pFile = fopen(my_path.c_str(), "r");
if (pFile != NULL)
{
std::cout << "Openning file for reading with fopen" << std::endl;
fclose(pFile);
}
我预计在将 wstring 转换为字符串文件后打开/fopen 应该可以工作,但它不起作用。 我做错了什么?
char
和wchar_t
是不兼容的。 您不能在C++级别自动转换,您必须使用诸如WideCharToMultiByte之类的函数。
只需忘记Windows中的8位字符串即可。始终使用Unicode,std::wstring
,wchar_t
,wfopen
等。Windows 内部使用 16 位宽字符。UTF-8 不会自动转换。
相关文章:
- 如何将更多文件夹添加到c++include路径
- 从函数角度看ID到文件路径的内部与外部映射
- 在C++中设置基于操作系统的文件路径
- C++17 文件系统::remove_all 带有通配符路径
- 从 C 中的变量获取文件的路径,C++
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 修改生成文件以简化框架 #include 路径
- 将Visual Studio Code路径设置为.clang_format文件
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 获取 H5::D ataSet 的hid_t和文件中的路径以使用 H5OCopy
- 在特定 Unicode 路径中创建文件
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 如何将COM .tlb文件导入具有相对路径C++文件中?
- C++ 路径文件存在限制为 260 个字符
- QT-在pro中指定DLL路径.文件
- 路径文件存在导致链接器错误 2028/2019
- 选择QTableWidgetItem qt的路径文件
- 如何有一个正确的路径文件读取它到stringstream