怎么把cstring转换为double型

怎么把cstring转换为double型,第1张

首先你要确定你的工程字符集用的是多字节而不是unicode才能用下面的方法, 因为vs2008/2010默认使用的是unicode编码 修改方式为: 在解决方案窗口右键工程名-->属性->General项(我用的是英文的)-->字符集, 选择多字节那个就行了
CString str;
转成int: ;int a = atoi(strGetBuffer());
转成double: double b = atof(strGetBuffer());
// 如果你坚持要用unicode的话, 你就用下面两个函数:
转成int: ;int a = _wtoi(strGetBuffer());
转成double: double b = _wtof(strGetBuffer());

看 MSDN 中关于 Format 函数的解释。
就是不要省略,也不要后面加零,是多少位,就显示多少,不多不少
抱歉,电脑没有这么聪明。既然是一个字符串,是你要把他转成 double,那么你应该告诉他怎么转,比如精确到几位小数。不然的话,他只能按照默认的设置来完成。

在Windows系统下的转换方法

windows下进行此类一般使用sprintf_s函数,使用该函数需要包含头文件stdioh。

示例:例如我要将 1234567 这个小数转化为字符串"1234567“。首先,要包含头文件 cstdio(即 stdioh)。

接着,要定义一个字符缓冲区 buffer,大小要足以容纳要转换的 double 变量。

再使用sprinf_s进行转换,转换的字符串保存在buffer中。

这时,就可以用string类型变量str来接收值了。

为了验证结果,我们加句代码输出这个str的值,程序运行的结果如下图。

double data[];
CStringArray array;
CString temp;
int len=sizeof(data)/size(double);
arraysetsize(len);
for(int i=0;i<len;i++)
{
tempformat("%lf",data[i]);
arraysetAt(i,temp);
}

下面这个例子供参考:
CString strValue("1234");
double dblValue;
dblValue = atof((LPCTSTR)strValue);
下面这个例子:
char s; double x;
s = " -230912E-15";
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

运行结果为:
atof test: ASCII string: -230912E-15 float: -2309120e-012
你自己对照着试试吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12904673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存