나는 내 응용 프로그램을 통해 FILE 포인터를 여러 번 사용하려고합니다. 이 기능을 만들었지 만 포인터를 통과 시켰습니다. 기본적으로 나는 반복되는 코드shared_ptr <FILE>을 (를) FILE *에있는 C++로 변환하는 방법?
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.get()
대신에 &*fp
을 사용했지만 여전히 운이 없었습니다.
아마 [이 아이디어] (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'이 * opaque * 타입이기 때문에 사실상 완전히 새로운 것입니다. –