Я работаю с файловой системой boost, чтобы искать все файлы в конкретном пути. Я также хочу, чтобы получить данные создания этого файла, последнее открытие и последнее обновление так, как я работаю в Windows, мне нужно использовать GetFileTime (который требует РУЧКУ, что я буду получать с помощью функции CreateFile.Parse string to LPCWSTR
Дело в том, что при помощи бустерного файловой системы я получаю строку, как показано
строка имя_файла = "C: \ Users \ MyUser \ Desktop \ PDN.pdf";
, и мне нужно преобразовать эту строку в LPCWSTR.
Из-за этого я сделал несколько попыток, которые потерпели неудачу, например:
HANDLE hFile = CreateFile((LPCWSTR)fileName.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
Но при этом, он преуспел:
HANDLE hFile = CreateFile(L"C:\\Users\\MyUSer\\Desktop\\PDN.pdf", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
Так что мой вопрос, как я мог проанализировать строку в PWSTR с помощью строковой переменной? И если возможно (я думаю, нет), есть ли какая-либо функция, которая изменит исходный путь, добавив косую черту, где обнаружит другую косую черту?
Большое спасибо
Редакцией: Это так, как я сделал это после того, что я прочитал здесь:
wstring fileFullPathWstring = winAPII.stringToWstring (iter-> путь() .String());
HANDLE hFile = CreateFile (fileFullPathWstring.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
Использование функции:
wstring WinAPIIteraction::stringToWstring(string stringName){
int len;
int slength = (int)stringName.length() + 1;
len = MultiByteToWideChar(CP_ACP, 0, stringName.c_str(), slength, 0, 0);
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, stringName.c_str(), slength, buf, len);
std::wstring r(buf);
delete[] buf;
return r;
}
'string', скорее всего, будет' LPCSTR', '' wstring' является LPCWSTR' - это смесь UNICODE и ANSI. Лучше быть последовательным. –
Почему вы не используете wchar_t * fileName = "C: \\ Users \\ MyUSer \\ Desktop \\ PDN.pdf"? –