1

一度に 2 つの c-string を割り当てようとします。

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

しかし、エラーメッセージが表示されます:

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

しかし、以前はそのようなことがうまくいったと思いますか?

4

5 に答える 5

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 Pilevorg のアプローチに進んでください
  2. 何らかの理由で文字列の長さが固定されていることがわかっている場合は、アルンの
  3. 1 でも 2 でもない場合は、Peter Wood を選びます。ご了承ください

    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[] = { "名前", "ジョー" };

これが最善の解決策です

于 2013-05-14T08:31:55.923 に答える