私の関数にはこのプロトタイプがあります:
char[][100] toArray(char document[]);
cygwin で g++ を実行すると、次のエラーが返されます。
Unable to resolve identifier toArray
C-String の配列を返すにはどうすればよいですか?
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>
。メモリを動的に割り当てるのは難しく、作業を行うクラスを使用するよりもはるかに困難です。