c++将char作为字符串传递给函数而不定义该字符串

  • 本文关键字:字符串 函数 定义 char c++ c++
  • 更新时间 :
  • 英文 :


考虑一个函数

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',这应该回答你在括号内要求做的事情。

最新更新