在函数参数中连接字符串和变量
Concatenate string and variable in function parameter?
这就是我要做的:
showMessage("ERROR: THE MAX IS:" + max);
基本上,我想连接一个变量(在本例中是int)和一个字符串,并将其作为参数传递。
我如何在c++中做到这一点?
有一种方法:
std::ostringstream msg;
msg << "ERROR: THE MAX IS: " << max;
showMessage(msg.str());
就我个人而言,如果你想用这种方式显示一些东西,就不需要让用户做额外的工作:
#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');
}
下面是一个实例。任何流都可以工作,包括字符串流和文件流。请记住,这与只使用流非常相似,只有当您在显示它的同时做其他事情时才值得使用它。
std::string
和std::to_string()
的组合给人一种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;
}
<<p> 生活例子/strong> 如果您想使用字符串作为接受const char*
的函数的参数,您可以使用std::string::c_str()
来获得std::string
的c风格字符串:
func(mess.c_str());
没有标准的c++方法可以做到这一点,字符串字面量就是这样,而且它们通常是常量。你要么需要使用一个重载的字符串类,要么需要让showMessage接受参数,并为你做一些格式化。
// 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;
}
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 从字符串变量中逐字符读取单词
- 对函数 PlaySound 使用字符串变量
- C++中的字符串变量
- 字符串变量,比如说"字符串str",可以直接复制到数组中吗?
- 我可以用字符串变量而不是它的名字创建容器吗? C++
- 字符串变量的大小
- 为什么我的字符串变量没有打印完整的字符串?
- 字符串变量未更新 c++
- 如何使用 setfill 和 setw 在字符串变量中存储十六进制值
- 在.cpp文件之间传递全局字符串变量?
- 字符串变量顺序
- 为什么可以将整数分配给字符串变量?
- 在qt创建器中调试时如何访问字符串变量的完整值?
- 将字符串变量分配给无符号字符变量
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- C++我应该用什么来保存格式化为字符串变量(如sprintf())的文件
- 我有一个字符串变量单词= "APA"
- 将字符串变量从 bash 脚本传递到根宏