CString的Format方法使用技巧小结
在VC中经常用到Format()来输出一个特定类型的变量到窗口上,该函数使用起来比较方便,但是如果对其函数中的参数不很熟悉的话用起来也是比较麻烦的。因此,归纳了一下,以供大家查询之用:
1).格式说明
    格式说明总是以%字符开始,以不同类型数据的格式方式%号:
%d输出带符号十进制数
%o输出无符号八进制数
%x输出无符号十六进制数
%u输出无符号数
%c输出单个字符
%s输出一串字符
%f输出实数(6位小数)
%e以指数形式输出实数
%g选用f与e格式中输出宽度较小的格式,不输出0
%ld输入输出long型数据
%lf输入输出double型数据
m.n中,m为数据输出宽度,n为输出小数位数
比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。
1、int转换为CString:
CString str;
int number=15;
//str="15"
str.Format(_T("%d"),number);
//str=" 15"(前面有两个空格;4表示将占用4位,如果数字超过4位将输出所有数字,不会截断)
str.Format(_T("%4d"),number);
//str="0015"(.4表示将占用4位,如果数字超过4位将输出所有数字,不会截断)
str.Format(_T("%.4d"),number);
long转换为CString的方法与上面相似,只需要把%d改为%ld就可以了。
2、double转换为CString:
CString str;
double num=1.46;
//str="1.46"
str.Format(_T("%lf"),num);
//str="1.5"(.1表示小数点后留1位,小数点后超过1位则四舍五入)
str.Format(_T("%.1lf"),num);
//str="1.4600"
str.Format(_T("%.4f"),num);
//str=" 1.4600"(前面有1个空格)
str.Format(_T("%7.4f"),num);
float转换为CString的方法也同上面相似,将lf%改为f%就可以了。
3、将十进制数转换为八进制:
CString str;
int num=255;
//str="377"
str.Format(_T("%o"),num);
//str="00000377"
str.Format(_T("%.8o"),num);
4、double转换为CString补充:也可以使用下面的函数去转换,位数控制比较简单。在使用时需要包含#include "COMDEF.H"头文件。
void FormatDouble(double dblValue,CString& sOut)
{
      _variant_t var(dblValue);
      BSTR bstrOut = sOut.AllocSysString();
      ::VarFormat(&var, L"0.>>###", 0, 0, VAR_FORMAT_NOSUBSTITUTE, &bstrOut);
      sOut = bstrOut;
      ::SysFreeString(bstrOut);
}
一 Cstring
1.初始化方法:
(1)直接复制,如Cstring=”mingrisoft”;
(2)通过构造函数初始化,如  CString str(‘ ’,100)//与分配100个字节,填充空格
char* p=”feiqiang”; Cstring(p);delete p.
(3)加载工程中的字符串资源,如CString str;str.LoadString(IDS_STR);
(4)使用CString类的成员函数Format初始化,如CString str; int i=0; str.Format(“value:%d”,i);
2.将CString转化为char*,如
  CString str=”feqiang”;
  char *p;字符串转数组编码方式
  p=str.GetBuffer();
  delete p;
将char*转化为CString,如:
  char* p=”feiqiang”;
  p[len(p)]=’\0’;
  Cstring str(p);
  char* 和char数组的转化:
  char buf[5] ={‘a’,’b’,’c’};
  char *p;
  p=new char[5];
  p=buf;
  将字符串转化为数字:
  CString str=”12”;
  int i=atoi(str);
  long j=atoll(str);
float f=atof(str);
  将数字转化为字符串:
  CString str;
  int i=12;
  str.Format(“%d”,i);
  long j=12;
  str,Format(“%ld”,j);
  同理其他类型。
3.字符串的相关操作即方法的使用:
  (1)提取字符串中的中文,如
  CString strtext,temp,strres;
  GetLlgItem(IDC_TEXT)->GetWindowText(strtext);//通过ID获取编辑框中的文本
  for(int =\0;i<strtext.GetLength();i++){
  char ch=strtext.GetAt(i);
  if(IsDBCSLeadByte(ch)){ //判断字符是否是双字节编码的前一个字节
tmp=strtext.Mid(i,2);//截取索引index1到index2的字符[ )
  i++;
  stress+=tmp;}
GetLlgItem(IDC_RESULT)->SetWindowText(strtes);//设置文本框中的文本

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论