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
你自己对照着试试吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)