我有一个库,它给了我一个 string_view...将它放入 QString(而不是 QStringView)的最佳方法是什么?
我制作了 QString::fromStdString(std::string(key).c_str())
,但这是最好的吗?
答案 0 :(得分:2)
删除 c_str()
,您不需要它,因为 fromStdString()
需要一个 std::string
(因此得名):
QString::fromStdString(std::string(key))
您还可以删除显式字符串构造,因为 std::string
可以从 std::string_view
构造:
QString::fromStdString(key)
话虽如此,如果 std::string_view
以空值结尾(不能保证),您可以使用接受 QString
的 char*
构造函数:
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())