考虑一个函数
void foo(string s) {
...
}
我想这样调用函数:
char ch = 'a';
foo(ch);
当然它不能工作,因为ch
是一个字符,我们需要将其转换为字符串。
我知道我能做到
char ch = 'a';
string str;
foo(str+ch);
我不想事先声明string str
,我想在函数调用本身期间做一些事情将ch
转换为string
,如:
char ch = 'a';
foo(some_operation_on_ch);
可以吗?如果可以,怎么做?
std::string
有一个构造函数,该构造函数接受一个字符和一个表示该字符重复次数的整数。你可以使用
foo(std::string(1, ch));
类也有一个构造函数,它接受c风格的字符串和一个表示要复制的字符数的整数,您可以像
那样使用该构造函数foo(std::string(&ch, 1));
您可以使用:
char ch = 'a';
foo(std::string(1, ch));
std::string有一个"fill构造函数"这将创建一个包含n个ch副本的字符串(在上面的示例中为1)。如果你有一个函数:foo(std::string s) { std::cout << s << std::endl; }
,它将打印'a',这应该回答你在括号内要求做的事情。