gpt4 book ai didi

c++ - 使用 `QUrl` 作为文件路径提供给 `std::fstream`

转载 作者:行者123 更新时间:2023-11-28 01:50:33 25 4
gpt4 key购买 nike

使用QFileDialog,允许用户浏览文件(用于打开),它返回文件列表作为QUrl

QFileDialog dialog;
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setAcceptMode(QFileDialog::AcceptOpen);
if (!dialog.exec() || dialog.selectedUrls().size()==0) return;

QUrl url = dialog.selectedUrls()[0];

在此之后,提供的 url 格式如下:

file:///C:/Users/[...]/test.xml

file:///home/[...]/test.xml

这似乎不适用于 std::ifstream 所以我试图(取消)规范化路径。为此,我尝试了以下方法:

QUrl nUrl = url.adjusted(QUrl::RemoveScheme | QUrl::RemovePassword | QUrl::RemoveUserInfo |
QUrl::RemovePort| QUrl::RemoveAuthority | QUrl::RemoveQuery |
QUrl::RemoveFragment | QUrl::StripTrailingSlash |
QUrl::NormalizePathSegments);

返回以下格式的路径:

/C:/Users/[...]/test.xml

/home/[...]/test.xml

第一个斜线适用于 Linux,但不适用于 Windows。如果我删除第一个斜杠,它将在 Windows 上运行,但在 Linux 上不起作用。

问题是:

如何将 QUrl 可靠地转换为 std::fstream 接受的格式?

最佳答案

尝试使用 QUrl::toLocalPath 而不是 QUrl::adjusted

关于c++ - 使用 `QUrl` 作为文件路径提供给 `std::fstream`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43178701/

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