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

Can I use a template to get automatic conversions between QString and 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);