在函数调用c ++中连接字符串

时间:2011-03-22 19:35:42

标签: c++ qt

我正在尝试创建一个记录器功能,您可以在其中传递一条消息,该消息将记录到文本文件中。有时我想传入一个与我的信息连接的变量,所以我可以做类似的事情:

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);

但是,当我调试传递的消息变量时,它是一个空字符串。 我怎样才能使这个工作,是否可能?

2 个答案:

答案 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()); 吗?