我尝试一次分配两个 c 字符串:
char **pair = {"name","joe"};
但我收到错误消息:
'initializing' : cannot convert from 'const char [5]' to 'char **'
但我认为这样的事情以前对我有用吗?
我尝试一次分配两个 c 字符串:
char **pair = {"name","joe"};
但我收到错误消息:
'initializing' : cannot convert from 'const char [5]' to 'char **'
但我认为这样的事情以前对我有用吗?
您声明了一个指向指针的指针,但初始化程序是一个指针数组:
const char *pair[] = { "name", "joe" };
如前所述,我const
在声明中添加了关键字。这是因为指针是指向字符串字面量的指针,而字面量是常量,不能更改。添加这const
有助于程序员不会错误地更改数组中的字符串。
使用 C++ 工具,它将为您节省一个痛苦的世界:
vector<string> field = { "name", "joe" };
虽然也许你需要:
pair<string, string> field("name", "joe");
或者更好的是,可能:
struct Person {
Person(const string& name) : name(name) {}
const string name;
};
Person boss("joe");
这里给出的所有答案都是正确的。选择什么取决于上下文:
如果 1 或 2 都不是,请选择 Peter Wood's。注意
vector<string> field = { "name", "joe" };
需要 C++11
Joachim 方法创建只读字符串。这就是创建 const 字符串文字数组的方式。
另一种方式,
// MAX_LEN being the max string length.
char pair[][MAX_LEN] = {"name","joe"}; // This makes pair read-writeable,
const char *pair[] = { "name", "joe" };
这是最好的解决方案