gpt4 book ai didi

c++ - MFC:将CStringArray转换为 float ,只转换部分值

转载 作者:行者123 更新时间:2023-11-28 03:54:52 24 4
gpt4 key购买 nike

我想将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com