gpt4 book ai didi

c++ - 如何将 `std::string` 传递给 `QString` `arg` 方法?

转载 作者:行者123 更新时间:2023-11-30 04:19:14 25 4
gpt4 key购买 nike

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 类替换 %1, %2, .. 此代码使用 arg 方法. 通过一些参数。参数可以是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com