gpt4 book ai didi

c++打开非拉丁名称的文件

转载 作者:太空狗 更新时间:2023-10-29 12:05:41 24 4
gpt4 key购买 nike

我有这样的文件。我只想正确打开非拉丁名称的文件。
对于仅具有拉丁名称和非拉丁名称的文件,我没有任何问题。

enter image description here

我使用 QDir 来扫描目录,我在 QString 中保存名称,所以它在里面保存得很好。

但是打开文件有瓶颈。
这样我就不想使用QFile了,我只能使用C++流(更喜欢)或C文件。

当我想打开文件时,我这样做:

fstream stream(source.toStdString().c_str(),ios_base::in | ios_base::binary);

之后我检查尝试是否成功:

  if(!stream.is_open())
{ cout<<"file wasn't opened " <<source.toStdString().c_str())<<"\n";
return false; // cout was redirected to file // just a notice
}

我进入我的日志文件:
文件未打开/home/sh/.mozilla/firefox/004_???????? - ???? - ??????.mp3

它不适用于任何非拉丁名称的文件,但它适用于所有具有拉丁名称的文件。

我知道这个问题可以用QFile跳过。

但我想知道,是否可以在没有第三方库的情况下完成它,或者是否有其他方法可以解决它?

提前感谢您提供任何提示。

最佳答案

当您在 QString 上调用 toStdString() 时出现问题。如果已设置,它将根据 QTextCodec::codecForCStrings() 转换内容,否则将使用 latin-1。 Latin-1 会将您的非拉丁字符折叠为“?”。

使用 source.toLocal8Bit().data()source.toUtf8().data() 可能会做你想做的事,但如果做不到你您将需要处理 QTextCodec 以获得正确的 8 位编码。

关于c++打开非拉丁名称的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com