如何最好地将 std::string_view 转换为 q QString?

时间:2021-02-06 08:30:08

标签: qt c++17

我有一个库,它给了我一个 string_view...将它放入 QString(而不是 QStringView)的最佳方法是什么?

我制作了 QString::fromStdString(std::string(key).c_str()),但这是最好的吗?

1 个答案:

答案 0 :(得分:2)

删除 c_str(),您不需要它,因为 fromStdString() 需要一个 std::string(因此得名):

QString::fromStdString(std::string(key))

您还可以删除显式字符串构造,因为 std::string 可以从 std::string_view 构造:

QString::fromStdString(key)

话虽如此,如果 std::string_view 以空值结尾(不能保证),您可以使用接受 QStringchar* 构造函数:

QString(key.data())

或者,如果 std::string_view 是用 Latin-1 编码的,您可以使用:

QString::fromLatin1(key.data(), key.size())

或者,如果以 UTF-8 编码:

QString::fromUtf8(key.data(), key.size())

或者,如果以用户的默认语言环境编码:

QString::ftomLocal8Bit(key.data(), key.size())