我正在尝试创建一个记录器功能,您可以在其中传递一条消息,该消息将记录到文本文件中。有时我想传入一个与我的信息连接的变量,所以我可以做类似的事情:
logger("The variable is: " + variable);
该功能定义为
void logger(std::string message);
我正在使用Qt,所以我不知道它是否相关,但变量将永远是QString。 当我尝试这个时,它会说
没有候选功能void logger(const QString);
所以我想为什么不做第二个功能,它会期望连接:
void logger(std::string message);
void logger2(const QString message);
当我做
时编译好了logger2("The variable is: " + variable);
但是,当我调试传递的消息变量时,它是一个空字符串。 我怎样才能使这个工作,是否可能?
答案 0 :(得分:6)
为什么不做这样的事情:
QString qs = "hello";
qs.toStdString();
就动态连接而言,我喜欢使用一个简单的格式化程序类:
class Formatter
{
public:
template<class Val> Formatter& operator<<(const Val& val)
{
ss_ << val;
return * this;
}
operator string () const { return ss_.str().c_str(); }
private:
std::stringstream ss_;
};
......可以像这样使用:
logger(Formatter() << "The variable is: " << variable);
答案 1 :(得分:0)
你试过logger("The variable is: " + variable.toStdString());
吗?