CString str;
double a;
a=atof(str);

解决方案 »

  1.   

    建议使用_tcstod
    如果基于COM编程可以
    _variant_t varDec=str;
    然后varDec就可以干你想干的事情,很方便,不过效率低
      

  2.   

    我看不懂COM,还有没有简单好用的方法
      

  3.   

    int i = 100;
    long l = 2001;
    float f=300.2;
    double d=12345.119;
    char username[]="程佩君";
    char temp[200];
    char *buf;
    CString str;
    _variant_t v1;
    _bstr_t v2;一、其它数据类型转换为字符串
    短整型(int)
    itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制
    itoa(i,temp,2); ///按二进制方式转换 
    长整型(long)
    ltoa(l,temp,10); 
    浮点数(float,double)
    用fcvt可以完成转换,这是MSDN中的例子:
    int decimal, sign; 
    char *buffer; 
    double source = 3.1415926535; 
    buffer = _fcvt( source, 7, &decimal, &sign ); 
    运行结果:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
    decimal表示小数点的位置,sign表示符号:0为正数,1为负数 
    CString变量
    str = "2008北京奥运";
    buf = (LPSTR)(LPCTSTR)str; 
    BSTR变量
    BSTR bstrValue = ::SysAllocString(L"程序员"); 
    char * buf = _com_util::ConvertBSTRToString(bstrValue); 
    SysFreeString(bstrValue); 
    AfxMessageBox(buf); 
    delete(buf); 
    CComBSTR变量
    CComBSTR bstrVar("test"); 
    char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str); 
    AfxMessageBox(buf); 
    delete(buf); _bstr_t变量
    _bstr_t类型是对BSTR的封装,因为已经重载了=操作符,所以很容易使用
    _bstr_t bstrVar("test"); 
    const char *buf = bstrVar;///不要修改buf中的内容 
    AfxMessageBox(buf); 
    通用方法(针对非COM数据类型)
    用sprintf完成转换char  buffer[200];
    char  c = '1';
    int   i = 35;
    long  j = 1000;
    float f = 1.7320534f;
    sprintf( buffer, "%c",c);
    sprintf( buffer, "%d",i);
    sprintf( buffer, "%d",j);
    sprintf( buffer, "%f",f);二、字符串转换为其它数据类型
    strcpy(temp,"123"); 短整型(int)
    i = atoi(temp); 
    长整型(long)
    l = atol(temp); 
    浮点(double)
    d = atof(temp); 
    CString变量
    CString name = temp; 
    BSTR变量 
    BSTR bstrValue = ::SysAllocString(L"程序员"); 
    ...///完成对bstrValue的使用
    SysFreeString(bstrValue); CComBSTR变量
    CComBSTR类型变量可以直接赋值
    CComBSTR bstrVar1("test");
    CComBSTR bstrVar2(temp);_bstr_t变量
    _bstr_t类型的变量可以直接赋值
    _bstr_t bstrVar1("test"); 
    _bstr_t bstrVar2(temp); 
    三、其它数据类型转换到CString
    使用CString的成员函数Format来转换,例如:
    整数(int)
    str.Format("%d",i); 
    浮点数(float)
    str.Format("%f",i); 
    字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值
    str = username; 
    对于Format所不支持的数据类型,可以通过上面所说的关于其它数据类型转化到char *的方法先转到char *,然后赋值给CString变量。还有很多.....