0

私は次の機能を持っています。

char* readFile(const char *fileName){
   std::ifstream file(fileName);
   char *str[50];
   int count=0;
   if(file){
      str[0] = new char[50];
      while(file.getline(str[count], 50)){
         count++;
         str[count] = new char[50];
      }
   }
   return str;
}

前の関数の動作は次のとおりです。

  • テキスト ファイルの内容を 1 行ずつ読み取ります。
  • 2D 配列の item に各行を保存します。
  • 次に、動的 2D 配列を返します。

ここで、関数から返された 2D 配列を適切な変数に割り当てたいですか、それともその動的な 2D 配列への参照を返したいですか?

4

3 に答える 3

1

それをしないでください!!!

サブルーチン内で配列 ... または配列の配列 ... を割り当てて、そのように呼び出し元に返すことはできません。

提案:

1) CALLER (サブルーチン内ではなく) で "char *str[50]" を宣言し、それを渡します。

... また ...

2) 呼び出し元内の「新規」。「new」はヒープから割り当てます。省略すると、スタックから割り当てられます。

3) 単純な配列の代わりに std::vector<> を使用する

私見では...

于 2013-07-29T16:49:35.547 に答える