C++ const char* 在方法调用中带有字符串文字

C++ const char* with string literal in method call

如果我有一个接受字符串参数的 C++ 函数:

void somefunc(const std::string &s)
{
  std::cout << ": " << s << std::endl;
}

如果我有类似的东西:

const char *s = "This is a test...";
somefunc(s + "test");

我收到一个错误:

error: invalid operands of types ‘const char*’ and ‘const char [5]’ to binary ‘operator+’

如何用 s 加上其他字符串调用 somefunc

无法通过 operator+ 添加指针 (const char*)。

您可以将任一操作数设为 std::string,以连接字符串。

somefunc(std::string(s) + "test");
somefunc(s + std::string("test"));

或使用std::string literal.

using namespace std::string_literals;
somefun(s + "test"s);
//          ^^^^^^^  <- std::string, not const char[5]