Wchar_t в строку преобразования

Я хочу преобразовать strFileNotifyInfo [1] .FileName(Wchar_t) в строку, чтобы я мог видеть путь к файлу. но я не могу заставить это работать.

Вот мой код:

while(TRUE)
{
if( ReadDirectoryChangesW( hDir, (LPVOID)&strFileNotifyInfo, sizeof(strFileNotifyInfo), FALSE, FILE_NOTIFY_CHANGE_LAST_WRITE || FILE_NOTIFY_CHANGE_CREATION, &dwBytesReturned, NULL, NULL) == 0)
{
cout << "Reading Directory Change" << endl;
}
else
{

cout << ("File Modified: ") << strFileNotifyInfo[1].FileName << endl;
cout << ("Loop: ") << nCounter++ << endl;
}
}

0

Решение

использование wcout при работе с широкими символьными данными.

std::wcout << L"File Modified: " << strFileNotifyInfo[1].FileName << std::endl;
0

Другие решения

Вы также должны иметь в виду, что FileName не заканчивается нулем.

WCHAR* filename_w = strFileNotifyInfo[1].FileName;
DWORD filename_len = strFileNotifyInfo[1].FileNameLength;
std::string filename(filename_w, filename_w + filename_len);
std::cout << "File Modified: " << filename << std::endl;
0

По вопросам рекламы [email protected]