请教如何将CString类型转换成float类型?

yealier 2003-09-16 11:44:46
最好给出具体代码!
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sakurar 2003-09-16
  • 打赏
  • 举报
回复
分太少了吧。
先取出char指针,再转。
也可以用sscanf
float CFLOAT(const char* src)
{
char* p = (char*)src;

char flag = 0, k = 1;
unsigned long n = 0, d = 1;

while(*p)
{
if(*p >= '0' && *p <= '9')
{
n *= 10;
if( flag )
{
d *= 10;
}
n += (*p - '0');
}
else if(*p == '.')
{
if(flag)
{
return 0.0f;
}
else
{
flag = 1;
}
}
else if(*p == '-')
{
if(n)
{
return 0.0f;
}
else
{
k = -1;
}
}
p++;
}

return (float)n * k / d;
}
akun 2003-09-16
  • 打赏
  • 举报
回复
f = atof(str);

不用getbuffer....
sakurar 2003-09-16
  • 打赏
  • 举报
回复
取出char指针,然后转为float。
你的分太少了吧。
也可以用sscanf

float CFLOAT(const char* src)
{
char* p = (char*)src;

char flag = 0, k = 1;
unsigned long n = 0, d = 1;

while(*p)
{
if(*p >= '0' && *p <= '9')
{
n *= 10;
if( flag )
{
d *= 10;
}
n += (*p - '0');
}
else if(*p == '.')
{
if(flag)
{
return 0.0f;
}
else
{
flag = 1;
}
}
else if(*p == '-')
{
if(n)
{
return 0.0f;
}
else
{
k = -1;
}
}
p++;
}

return (float)n * k / d;
}
milson 2003-09-16
  • 打赏
  • 举报
回复
use atof()
CString str("1.234");
float f;

f = atof(str.getbuffer(0));

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧