Я работаю над проектом win32 с помощью CStrings (консольное приложение), и я заметил что-то нечетное, когда я хочу перейти к функции (например, strtok_s
) a LPSTR
указатель от CString
с методом GetBuffer()
, этот последний вместо того, чтобы давать мне LPSTR
, он дал мне LPWSTR
(указатель на широкую строку) ... CString
должен хранить 8-битные символы, не так ли?Является ли MFC CString широкой строкой char
В некоторых случаях я обязан использовать CStringA
, чтобы, например, использовать метод Find()
, потому что с входной строкой CString
моя входная строка должна быть широкой. Но в другом другом проекте (оконная программа) у меня нет этой проблемы, я подозреваю заголовки (когда я использую afxstr.h «Найти» работает с нормальной строкой, но не с afxcoll.h ...)
Обычно я работаю с std::string
, поэтому я потерян.
IIRC, если ваш проект нацелен на Unicode 'CString' будет иметь внутренние буферы типа' LPWSTR' –
Чтение в MSDN о CString https://msdn.microsoft.com/en-us/library/aa300688%28v=vs.60 % 29.aspx – demonplus
@demonplus: этот документ предназначен для версии MFC, поставляемой с Visual Studio 6 (в 1998 году). Все изменилось, документ больше не верен, поскольку слияние ATL и MFC. – IInspectable