Как преобразовать CString в long vC++. Я использовал atol, но это ошибка.Как конвертировать CString в длинный? VC++
long ldata = atol (str);
Ошибка Нет Подходящее преобразование из CString в const char *.
Как преобразовать CString в long vC++. Я использовал atol, но это ошибка.Как конвертировать CString в длинный? VC++
long ldata = atol (str);
Ошибка Нет Подходящее преобразование из CString в const char *.
Как уже упоминалось ранее, вы используете Unicode. Вы должны использовать Unicode для других функций:
long ldata = _wtol(str);
Где-то внутри CString
деклараций что-то вроде этого:
#ifdef UNICODE
#define CString CStringW
#else
#define CString CStringA
#endif
При компиляции проекта в Unicode, CString
становится широким голец CStringW
, поэтому у вас есть для использования широкоугольной версии atol
, которая равна _wtol
и такая же для любой другой строковой функции.
https://msdn.microsoft.com/en-us/library/awkwbzyc.aspx из
"Для того, чтобы использовать объект CString как строка C-стиля, приведение объекта к LPCTSTR."
str
Так должен быть преобразован в LPCTSTR
так: atol((LPCTSTR)str);
это немного зависит от CString, это CStringW или CStringA? –
CString str; // Тип CString – abhi312