Я думаю, что ваш CString strFixFactorSide
является строкой Unicode (UTF-16).
Если это так, то листинг (const char *)
изменяет только тип указателя, но строка, на которую он указывает, по-прежнему остается Unicode.
atof()
не работает со строками Unicode. Если вы запустите в него L"0.5"
, он будет извлекать байты 0x30 ('0') и 0x00 (также часть UTF-16 '0'), считать это как ASCII-строку NUL-конца "0"
и преобразовать ее в 0.0.
Если CString strFixFactorSide
является строкой в формате Юникод, необходимо сначала преобразовать ее в строку ASCII, а затем применить atof()
или использовать функцию, способную преобразовывать строки Unicode в числа. _wtof()
может использоваться для строк Unicode.
Я получаю ошибку как «ошибка C2065:« _wtof »: необъявленный идентификатор». Я использую eVC++ 4.0 – Vaibhav
Вы пытались включить '', '', '', ''? Другие, чтобы попробовать: 'wcstod()' или 'swscanf()'. –
Я получил решение как «_stscanf (strFixFactorSide, _T («% lf »), & dFixFactorSide); Но верно ли это? – Vaibhav