C ++:在一行中为char **分配两个值?

时间:2013-05-14 07:55:39

标签: c++

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

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

但我收到错误消息:

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

但是我觉得之前有类似的东西对我有用吗?

5 个答案:

答案 0 :(得分:8)

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

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

如上所述,我在声明中添加了const关键字。这是因为指针是指向字符串文字的指针,文字是常量且无法更改。添加const有助于程序员不要错误地对数组中的字符串进行更改。

答案 1 :(得分: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");

答案 2 :(得分:0)

Joachim方法创建只读字符串。这就是你如何创建一个const字符串文字数组。

另一种方式,

// MAX_LEN being the max string length.
char pair[][MAX_LEN] = {"name","joe"}; // This makes pair read-writeable, 

答案 3 :(得分:0)

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

  1. 如果您从未更改运行时的字符串,请转到Joachim Pileborg的方法
  2. 如果由于某种原因知道字符串有固定的长度,请选择Arun的
  3. 如果不是1或2,请选择彼得伍德。注意

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

    需要C ++ 11

答案 4 :(得分:0)

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

这是最好的解决方案