我想将 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] 中的结果,我只有部分值(如果 d 中的 55 是 - 5、666 - 6 ...),请帮助我!
最佳答案
你不应该分配缓冲区;这是糟糕的代码(不做你想做的事)。您可以使用 strncpy,但为什么不直接使用 CString:
d[i] = atof(val.ElementAt(i));
假设您正在为 MBCS 编译,这应该可行。
顺便说一句,您还可以使用 operator[] 重载,使代码更简洁,例如:
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]);
哦,忘了包括(duh):所有这些函数都返回一个 double,这不一定与 float 相同。因此,将结果数组更改为 double ,或显式转换转换结果。
关于c++ - MFC:将CStringArray转换为 float ,只转换部分值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4009172/