前提・実現したいこと
WinAPIでファイルオープンして文字列を取り出しiostream
を使って吐き出そうとしています。
該当のソースコード
C++
1#define UNICODE 2using namespace std; 3 4#include <iostream> 5#include <Windows.h> 6 7HANDLE file; 8//const wchar_t filename[]=L"15116020_le.csv"; 9const wchar_t filename[] = L"test.txt"; 10LPWSTR lpszbuf; 11DWORD accbytes; 12HGLOBAL hMemory; 13 14 15int main(void) { 16 17 file = CreateFile(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 18 19 hMemory = GlobalAlloc(GHND, GetFileSize(file, NULL) + sizeof(wchar_t)); 20 21 if (hMemory == NULL) { 22 cout << L"Failes to get memory" << endl; 23 } 24 lpszbuf = (LPTSTR)GlobalLock(hMemory); 25 26 if (ReadFile(file, lpszbuf, GetFileSize(file, NULL), &accbytes, NULL) != 0) 27 { 28 lpszbuf[accbytes] = '\0'; 29 cout << L"FileRead Successed" << endl; 30 cout << lpszbuf << endl; 31 } 32 33 CloseHandle(file); 34 GlobalUnlock(hMemory); 35 GlobalFree(hMemory); 36 37 return 0; 38}
質問
lpszbuf
はポインターなのでしょうか?
確保した文字列がメモリ上で断続的だった場合の文字列はどうやって取り出せるのでしょうか?
取り出した値はバイナリになりますか?バイナリならどうやってUNICODE等に変換できるのでしょうか?
あとコード上で使い方がおかしいものがあったらご指摘ください。
【追記】得たバイナリをwcout
で吐き出すためにはどう記述するのが正しいのでしょうか
補足情報
Visual C++
VisualStudio 2017 Community
Windows10 Pro
メモリ:16GB
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/30 16:19 編集
2018/05/30 16:23
2018/05/31 03:00
2018/05/31 14:39
2018/05/31 14:49