如何转换`boost :: filesystem :: path`和`QString`?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何转换`boost :: filesystem :: path`和`QString`?相关的知识,希望对你有一定的参考价值。
当使用boost::filesystem
将Qt UI包装在后端代码周围时,经常需要将boost::filesystem::path
转换为QString
,反之亦然。
执行这些转换的最佳方式是:
- 是跨平台的
- 无损地保留编码
- 正如Qt的政策一样,在所有平台上生成包含常规斜杠的
QString
s。 - 高效并避免不必要的副本
答案
这是我目前正在使用的,但非常欢迎改进建议。
boost::filesystem::path PathFromQString(const QString & filePath)
{
#ifdef _WIN32
auto * wptr = reinterpret_cast<const wchar_t*>(filePath.utf16());
return boost::filesystem::path(wptr, wptr + filePath.size());
#else
return boost::filesystem::path(filePath.toStdString());
#endif
}
QString QStringFromPath(const boost::filesystem::path & filePath)
{
#ifdef _WIN32
return QString::fromStdWString(filePath.generic_wstring());
#else
return QString::fromStdString(filePath.native());
#endif
}
以上是关于如何转换`boost :: filesystem :: path`和`QString`?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Linux 上使用 Boost.Filesystem?
错误系统:9:错误的文件描述符(BOOST::FileSystem)
boost::filesystem::path 中的“/”字符有啥用?
std::remove 和 boost::filesystem::remove 之间的区别?
C ++ BOOST对`boost :: filesystem :: detail :: copy_file的未定义引用