Как я могу конвертировать C-String в LPCSTR в Windows - PullRequest
0 голосов
/ 17 октября 2019

Чтобы определить, существует ли файл, я хочу использовать GetFileAttributes функцию WinAPI.

Функция принимает аргумент LPCSTR. Как я могу преобразовать мою классическую const char* строку в этот тип?

Обратите внимание, я использую C, а не C ++. Это тоже правильный путь в Си?

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Это GetFileAttributesA (обратите внимание на A), который использует LPCSTR. Широкая версия символа GetFileAttributesW, а аргумент LPCWSTR. Родовое имя GetFileAttributes - это прокладка, которая будет переключаться между этими двумя функциями во время компиляции;он определяется в терминах TCHAR typedef (const строк, из которых LPCTSTR). TCHAR переключается между CHAR или WCHAR в зависимости от того, создаете ли вы программу для поддержки Unicode.

Если у вас есть вход const char *, предназначенный для передачи в GetFileAttributes, который компилируется для Unicode,или для передачи в GetFileAttributesW необходимо преобразование байтовой строки в широкую строку.

Лучше избегать смешивания широких и узких строк во всей программе, если это вообще возможно, чтобы избежать громоздкихпреобразования.

2 голосов
/ 17 октября 2019

Согласно этой странице документации Microsoft , LPCSTR определяется в WinNT.h следующим образом:

typedef __nullterminated CONST CHAR *LPCSTR;

Это оценивается как const char *.

Итак,Вы по сути спрашиваете, как конвертировать const char* в себя. Другими словами, ответ на ваш вопрос заключается в том, что преобразование не требуется.

Что касается вашего вопроса, то между C и C ++ нет разницы. Тем не менее, C ++ предлагает дополнительные способы обработки строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...