1

我尝试一次分配两个 c 字符串:

 char **pair = {"name","joe"};

但我收到错误消息:

 'initializing' : cannot convert from 'const char [5]' to 'char **'

但我认为这样的事情以前对我有用吗?

4

5 回答 5

8

您声明了一个指向指针的指针,但初始化程序是一个指针数组

const char *pair[] = { "name", "joe" };

如前所述,我const在声明中添加了关键字。这是因为指针是指向字符串字面量的指针,而字面量是常量,不能更改。添加这const有助于程序员不会错误地更改数组中的字符串。

于 2013-05-14T07:57:34.733 回答
2

使用 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");
于 2013-05-14T08:13:53.427 回答
0

这里给出的所有答案都是正确的。选择什么取决于上下文:

  1. 如果您从不在运行时更改字符串,请使用 Joachim Pileborg 的方法
  2. 如果您出于某种原因知道字符串具有固定长度,请选择 Arun 的
  3. 如果 1 或 2 都不是,请选择 Peter Wood's。注意

    vector<string> field = { "name", "joe" };
    

    需要 C++11

于 2013-05-14T08:19:50.447 回答
0

Joachim 方法创建只读字符串。这就是创建 const 字符串文字数组的方式。

另一种方式,

// MAX_LEN being the max string length.
char pair[][MAX_LEN] = {"name","joe"}; // This makes pair read-writeable, 
于 2013-05-14T08:04:37.820 回答
0

const char *pair[] = { "name", "joe" };

这是最好的解决方案

于 2013-05-14T08:31:55.923 回答