回 帖 发 新 帖 刷新版面

主题:如何进行CString变量和int变量的转换

void CStrDlg::OnButton1() 
    { 
    CString ss="1212.12"; 
    int temp=atoi(ss); 
    CString aa; 
    aa.Format("%d",temp); 
    AfxMessageBox("var is " + aa); 
    }

回复列表 (共5个回复)

沙发

atoi不就对了吗?你是没有加头函数?

板凳

额`我已经会了`我主要是想在网上找用法,知道了就发到这跟大家共享一哈``呵呵`

3 楼


额`我已经会了`我主要是想在网上找用法,知道了就发到这跟大家共享一哈``呵呵`

4 楼

汗~~~
不过很好人的~~~~~~

5 楼


  短整型(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);

我来回复

您尚未登录,请登录后再回复。点此登录或注册