関数にchar*が必要な場合、shared_ptrを渡すことができますか?
テキストファイル全体(長さ= 100)を読み込んでいて、charをchar[]配列に格納したいと思います。私が使用した素朴な方法はこれでした:
ifstream dictFile(fileName);
size_t fileLength = 100;
char* readInBuffer(new char[fileLength]);
dictFile.read(readInBuffer, fileLength);
//processing readInBuffuer..............
delete[] readInBuffer;
dictFile.close();
もちろん、delete []ステートメントの前に例外がスローされると、メモリリークが発生します。shared_ptr readInBuffer(new char [fileLength]);を使用できるかどうか疑問に思っています。しかし、関数プロトタイプ
読み取り(char * s、streamsize n)
スマートポインタを入力として受け入れませんか?トリックはありますか?
編集:私はこのようなものを書き込もうとしています:
shared_ptr<char[]> readInBuffer(new char[fileLength]);
dictFile.read(readInBuffer.get(), fileLength);
ただし、コンパイルされません。