我可以使用模板在QString和std :: string之间进行自动转换吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以使用模板在QString和std :: string之间进行自动转换吗?相关的知识,希望对你有一定的参考价值。

我想知道是否有可能在QStringstd::string之间创建一个自动转换,所以我可以写这样的东西:

QString a, b;
std::string c, d;

a = c;
d = b;

a = c;d = b;按预期工作。

我认为这对模板是可行的,但它看起来像我发现的所有示例只适用于二元运算符。

仅供参考,我已经有了实施的代码。我真正感兴趣的是让赋值(=)运算符起作用。因为写下面的内容很烦人,许多人倾向于忘记并跳过使用正确的转换:

a = QString::fromUt8(c.toUtf8());
d = b.toUtf8().data();
答案

赋值运算符必须实现为成员函数(参见例如here

QString a, b;
std::string c, d;

a = c;
d = b;

不行。相反,你可能想要考虑一个自由函数,就像这样的东西

assignStrings(a,c); // or perhaps... a = toQString(c); 

以上是关于我可以使用模板在QString和std :: string之间进行自动转换吗?的主要内容,如果未能解决你的问题,请参考以下文章

QString与std::string 有中文时的转换操作

QString和std::string转换乱码与sqlite存储汉字乱码

QString和std::string转换乱码与sqlite存储汉字乱码

QString与中文,QString与std::wstring的相互转换(使用fromStdWString和u8关键字)

QString与中文,QString与std::wstring的相互转换(使用fromStdWString和u8关键字)(转)

QString::toStdString() 在 std::string 析构函数上崩溃