c++:在一行中给char**赋两个值

C++: assign two values to char** in one line?

本文关键字:两个 char c++ 一行      更新时间:2023-10-16

我尝试一次分配两个c-string:

 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");

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

换句话说,

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

const char *对[]={"名称","乔"};

这是最好的解决方案

以上答案均正确。选择什么取决于上下文:

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

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

    需要c++ 11