-4

例えば:

string str[3];
void foo(char** str)
{
  //do something to str...
}

便利な方法で str[] を関数 foo に渡す方法は?

4

1 に答える 1

4

この関数はポインターの配列を想定しているため、文字列の配列からポインターを作成する必要があります。

std::vector<char*> pointers;
for (auto & s : str) {
    pointers.push_back(&s[0]);
}
foo(&pointers[0]);

関数がポインターまたはそれらが指す文字列を変更する場合、これは有効ではない可能性があることに注意してください。可能であれば、C スタイルと C++ スタイルの文字列処理を混在させないようにすることをお勧めします。

于 2013-08-09T05:42:34.877 に答える