- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建一个记录器函数,您可以在其中传递一条消息,该消息将被记录到一个文本文件中。有时我想传递一个与我的消息连接的变量,这样我就可以做类似的事情:
logger("The variable is: " + variable);
函数定义为
void logger(std::string message);
我正在使用 Qt,所以我不知道它是否相关,但变量始终是 QString。当我尝试这个时,它会说 no candidate function for
void logger(const QString);
所以我想为什么不在需要连接的地方创建第二个函数:
void logger(std::string message);
void logger2(const QString message);
我编译的时候编译的很好
logger2("The variable is: " + variable);
但是,当我调试时,传递的消息变量是一个空字符串。我该如何让它发挥作用,这可能吗?
最佳答案
为什么不做这样的事情:
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);
关于c++ - 在函数调用c++中连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5396790/
我是一名优秀的程序员,十分优秀!