在一些函数调用中,我看到了这样的东西。
function(variable1, "someValue");
我有一些基于此的问题
1) c++ 如何处理第二个参数?
2)如果某个函数需要一个cstring,那么为什么我们在执行以下操作时会出错
functionTakingCString(stringVariable.c_str() + "someValue");
有什么方法可以代替声明一个 const char 变量吗?如果我在哪里错了,请纠正我。
它们被称为字符串字面量,如果你想接受一个字符串字面量的参数,你通常会传递 aconst std::string&
或 a const char*
,这取决于你的 API 需要什么。
2)如果某个函数需要一个cstring,那么为什么我们在执行以下操作时会出错
这是因为 '+' 运算符没有为char *
类型重载。您可以将其连接到运算符已重载stringVariable
的类型string
以连接两个字符串,然后将 传递给接受or的函数。+
c_str()
char *
const char *
常量字符*
二元运算符+
不能应用于const char*
操作数类型。如果一个是 std::string,那么由于运算符重载,它可以工作。
第二个参数是一个 const char*。在某些情况下,如果您有一个接受给定类型的所需类型的特殊转换构造函数,您可能能够从一种类型转换为另一种类型。在某些情况下,编译器可以为您执行此操作。
在此示例中,字符串有一个接受 const char* 的构造函数,因此编译器可以在幕后为您将 const char* 转换为字符串。如果您想停止这种行为,请查看显式关键字。
char* 类型实际上不是一个类,因此它没有适用于字符串的 + 运算符。然而,
(stringVariable + "someValue").c_str()
将起作用,因为 stringVariable 是一个字符串,并且它的加号运算符可以将 char* 强制转换为字符串。