什么是将boost :: filesystem :: path转换为QString的正确的跨平台方式,反之亦然,保留特殊字符?

时间:2017-05-01 07:44:39

标签: c++ qt locale qstring boost-filesystem

我在问这个问题,以确保我做正确的转换,而不是错过一些特殊情况。

这也应该支持特殊字符。

这是一个转换两种方式的示例程序。这种方法是否正确?它是否涵盖所有特殊字符?

#include <iostream>
#include <boost/filesystem.hpp>
#include <QString>

int main()
{
    QString MyQPath = "abc/مرحبا/geh"; //initial string with arabic characters
    boost::filesystem::path MyBPath = MyQPath.toStdWString(); //convert to boost path
    std::cout<<MyBPath<<std::endl; //print from boost path, works fine

    QString MyQPath2;
    MyQPath2 = QString::fromStdWString(MyBPath.wstring()); //convert from boost path to QString
    std::cout<<qPrintable(MyQPath2)<<std::endl; //print as UTF-8; works
    return 0;
}

这是输出(在Linux中)。虽然RTL搞砸了,但这很好,因为它是一个终端问题。我只需要确保信息得到保留而不会在转换中丢失。

enter image description here

0 个答案:

没有答案