0

私の関数にはこのプロトタイプがあります:

char[][100] toArray(char document[]);

cygwin で g++ を実行すると、次のエラーが返されます。

Unable to resolve identifier toArray

C-String の配列を返すにはどうすればよいですか?

4

1 に答える 1

6

C++ で配列を返すことはできません。最も近い方法は、動的に割り当てられた文字列のブロックへのポインターを返すことです。

これは法定コードです

typedef char str100[100];

str100* toArray(char* document)
{
    str100 *block = new str100[20];
    return block;
}

typedef を使用すると、少し理解しやすくなります。あなたが私を信じていないなら、これはtypedefなしの同じコードです

char (*toArray(char* document))[100]
{
    char (*block)[100] = new char[20][100];
    return block;
}

これはあなたを怖がらせるためのものです。

しかし、このコードは合法ですが、ゴミでもあります。を使用する必要がありますstd::vector<std::string>。メモリを動的に割り当てるのは難しく、作業を行うクラスを使用するよりもはるかに困難です。

于 2012-11-17T09:03:48.957 に答える