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"));
using namespace std::string_literals;
somefun(s + "test"s);
// ^^^^^^^ <- std::string, not const char[5]
如果我有一个接受字符串参数的 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"));
using namespace std::string_literals;
somefun(s + "test"s);
// ^^^^^^^ <- std::string, not const char[5]