我可以使用模板在 QString 和 std::string 之间进行自动转换吗?
Can I use a template to get automatic conversions between QString and std::string?
我想知道是否可以在 QString
和 std::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 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);