我試圖通過我的應用程序 多次使用FILE指針爲此我雖然我創建一個函數並通過該指針傳遞。基本上我有這段代碼如何將shared_ptr <FILE>轉換爲C++中的FILE *文件?
FILE* fp;
_wfopen_s (&fp, L"ftest.txt", L"r");
_setmode (_fileno(fp), _O_U8TEXT);
wifstream file(fp);
這是重複的,現在反而我想有這樣的事情:
wifstream file(SetFilePointer(L"ftest.txt",L"r"));
....
wofstream output(SetFilePointer(L"flist.txt",L"w"));
和功能:
FILE* SetFilePointer(const wchar_t* filePath, const wchar_t * openMode)
{
shared_ptr<FILE> fp = make_shared<FILE>();
_wfopen_s (fp.get(), L"ftest.txt", L"r");
_setmode (_fileno(fp.get()), _O_U8TEXT);
return fp.get();
}
這並未」簡單地工作。我嘗試使用&*fp
而不是fp.get()
,但仍然沒有運氣。
也許[這個想法](http://codereview.stackexchange.com/questions/4679/shared-ptr-and-file-for-wrapping-cstdio-update-also-dlfcn-h)是你感興趣的。 –
謝謝,但在那裏你正在將文件*轉換爲shared_ptr,我使用的是shared_ptr,並且我堅持如何將其反轉。我很無能: -/ – Breeze
那麼,你的方法根本沒有意義。當你說'make_shared'時,你實際上在說'新的FILE',這是完全錯誤的,因爲'FILE'是一個* opaque *類型。 –