C++ 连接函数参数中的字符串和变量?

C++ 连接函数参数中的字符串和变量?,c++,C++,这就是我想做的: showMessage("ERROR: THE MAX IS:" + max); 基本上,我希望将一个变量(在本例中为int)与一个字符串连接起来,以将其作为参数传递 没有一个股票C++的方式来做,字符串文字就是这样,它们一般都是常量。你要么需要使用一个重载的字符串类,要么需要为SwittEffice做参数,并为你做一些格式化。 // simple version - take a single string. void showMessage(const std::stri

这就是我想做的:

showMessage("ERROR: THE MAX IS:" + max);
基本上,我希望将一个变量(在本例中为int)与一个字符串连接起来,以将其作为参数传递

<如何在C++中实现这一点?

这里有一种方式:

std::ostringstream msg;
msg << "ERROR: THE MAX IS: " << max;
showMessage(msg.str());
std::ostringstream msg;
msg和的组合给人一种C++11优点的感觉:

#include <iostream>
#include <string>

using namespace std;


int main() {
    int max = 42;
    std::string mess("ERROR: THE MAX IS: ");
    mess += std::to_string(max);
    std::cout << mess;
}

就个人而言,如果您要按此路线显示某些内容,则无需让用户做额外的工作:

#include <iostream>

template<typename T>
void showMessage(T &&t) {
    std::cout << t << "\n";
}

template<typename Head, typename... Tail> 
void showMessage(Head &&head, Tail&&... tail) {
    std::cout << head;
    showMessage(std::forward<Tail>(tail)...);
}

int main() {
    showMessage("value1: ", 5, " and value2: ", 'a');
}
#包括
模板
无效显示消息(T&T){

STD::CUT< P>没有一个股票C++的方式来做,字符串文字就是这样,它们一般都是常量。你要么需要使用一个重载的字符串类,要么需要为SwittEffice做参数,并为你做一些格式化。
// simple version - take a single string.
void showMessage(const std::string& message) {
    // your old code, e.g. MessageBoxA(NULL, message.c_str(), "Message", MB_OK);
}

// complex version, take lots of strings.
void showMessage(std::initializer_list<std::string> args) {
    std::string message = "";
    for (auto str : args)
       message += str;
    showMessage(message);
}

int main(int argc, const char* argv[]) {
    showMessage("Simple version");
    showMessage({ "This program is: ", argv[0], ". Argument count is: ", std::to_string(argc) });
    return 0;
}
//简单版本-使用单个字符串。
void showMessage(const std::string和message){
//您的旧代码,例如MessageBoxA(NULL,message.c_str(),“message”,MB_OK);
}
//复杂版本,需要很多字符串。
void showMessage(std::初始值设定项\列表参数){
std::string message=“”;
用于(自动str:args)
消息+=str;
showMessage(消息);
}
int main(int argc,const char*argv[]{
showMessage(“简单版”);
showMessage({“此程序为:”,argv[0],“。参数计数为:”,std::to_string(argc)});
返回0;
}
// simple version - take a single string.
void showMessage(const std::string& message) {
    // your old code, e.g. MessageBoxA(NULL, message.c_str(), "Message", MB_OK);
}

// complex version, take lots of strings.
void showMessage(std::initializer_list<std::string> args) {
    std::string message = "";
    for (auto str : args)
       message += str;
    showMessage(message);
}

int main(int argc, const char* argv[]) {
    showMessage("Simple version");
    showMessage({ "This program is: ", argv[0], ". Argument count is: ", std::to_string(argc) });
    return 0;
}