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

Can I use a template to get automatic conversions between QString and std::string?

本文关键字:之间 转换 string 我可以 QString std 可以使      更新时间:2023-10-16

我想知道是否可以在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();

值运算符必须实现为成员函数(参见此处(,因此

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

行不通。相反,你可能想考虑一个自由函数,

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