MFC: конвертировать CStringArray в float, преобразуя только часть значения - PullRequest
0 голосов
/ 24 октября 2010

Я хочу преобразовать val.ElementAt (i) в значение с плавающей запятой:

 float *d = new float[NMAX];
 char *buffer = new char[128]; 
 CStringArray val;
 //adding some values to val

 buffer = (LPSTR)(LPCSTR)val.ElementAt(i).GetBuffer();
 d[i] = atof(buffer);

как результат в d [i], у меня есть только часть значения (если это было 55 в d - 5, 666 - 6 ...), помогите мне, пожалуйста!

1 Ответ

2 голосов
/ 24 октября 2010

Вы не должны назначать буфер;это плохой код (не делай, что хочешь).Вы можете использовать strncpy, но вместо этого, почему бы просто не использовать CString напрямую:

d[i] = atof(val.ElementAt(i));

Если вы компилируете для MBCS, это должно работать.

Кстати, вы также можете использоватьперегрузка оператора [], чтобы сделать код немного чище, например:

d[i] = atof(val[i]);

Редактировать: Если вы используете UNICODE, вам нужна динамическая макро-версия atof MBCS / UNICODE,что _ttof.См. http://msdn.microsoft.com/en-us/library/hc25t012%28v=VS.90%29.aspx для полной ссылки.Таким образом, код становится следующим:

d[i] = _ttof(var[i]);

О, забыл включить (дух): все эти функции возвращают значение типа double, что не обязательно совпадает с float.Поэтому измените массив результатов на double или явным образом приведите результат преобразования.

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