class StringResourceTable
{
private:
StringResourceTable();
public:
static StringResourceTable& instance();
void configure(const QString& path);
QString message(const QString& id) const;
template <typename T1>
QString message(const QString& id, T1 a1) const
{
return message(id).arg(a1);
}
template <typename T1, typename T2>
QString message(const QString& id, T1 a1, T2 a2) const
{
return message(id).arg(a1).arg(a2);
}
template <typename T1, typename T2, typename T3>
QString message(const QString& id, T1 a1, T2 a2, T3 a3) const
{
return message(id).arg(a1).arg(a2).arg(a3);
}
private:
QString m_path;
QMap<QString, QString> m_map;
}
此代码使用 QString
类的 arg
方法来替换 %1
、%2
、.. .通过一些参数。参数可以是 int、char*、double 以及 QString
支持的任何内容,但不能是 std::string
。将 std::string
传递给任何 message
函数会非常方便。我无法将它们专门用于 std::string
因为它的顺序未定义。它可能是第一,第二,...
我认为它应该是一个模板结构,它将使用其 .c_str()
方法将 std::string
转换为 QString
。谁能帮忙写一下?
最佳答案
怎么样fromStdString功能?
但是,您可以使用类似的东西
template<typename T>
const T& convert(const T& v)
{
return v;
}
QString convert(const std::string& s)
{
return QString::fromStdString(s);
}
并使用类似
return message(id).arg(convert(a1));
关于c++ - 如何将 `std::string` 传递给 `QString` `arg` 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15972461/