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小时内删除。
中英文混合的编码方式
« 上一篇
dataoutputstream write方法
下一篇 »
发表评论