VS2010中CString Format 用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2010中CString Format 用法相关的知识,希望对你有一定的参考价值。

VS2010中 Format 用法:
我在项目中需要实现一个字符串的转化,代码如下:
CString mess; int x,y;
x = 640;
y = 480;
mess.Format("当前为:%d X %d",x,y);
这段代码是VC6.0中没有任何错误,但在VS2010中就有问题了,谁可以帮我解决下,谢谢,最好是在VS2010中编译没错误的才说,还请说下具体怎么做,thanks!

1 先看看Format用于转换的格式字符:
2
%c 单个字符
%d 十进制整数(int)
%ld 十进制整数(long)
%f 十进制浮点数(float)
%lf 十进制浮点数(double)
%o 八进制数
%s 字符串
%u 无符号十进制数
%x 十六进制数
3
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就可以了。
4
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%就可以了。
5
将十进制数转换为八进制:
CString str;
int num=255;
//str="377"
str.Format(_T("%o"),num);
//str="00000377"
str.Format(_T("%.8o"),num);
参考技术A 这是你的设置默认使用了UNICODE的CString,其实是CStringW
CStringA mess; int x,y;
x = 640;
y = 480;
mess.Format("当前为:%d X %d",x,y);
这样就好了

或者
CString mess; int x,y;
x = 640;
y = 480;
mess.Format(_T("当前为:%d X %d"),x,y);
参考技术B 试试 mess.Format(_T("当前为:%d X %d"),x,y);

CString .Format

 在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。

  先看看Format用于转换的格式字符:

  %c                 单个字符

  %d                 十进制整数(int)

  %ld                十进制整数(long)

  %f                 十进制浮点数(float)

  %lf                十进制浮点数(double)

  %o                 八进制数

  %s                 字符串

  %u                 无符号十进制数

  %x                 十六进制数

  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);

以上是关于VS2010中CString Format 用法的主要内容,如果未能解决你的问题,请参考以下文章

C/C++ 中cstring用法?

如何使用CString参考调用非托管C ++ DLL

VS2010的MessageBox不存在从"CString"到"LPCSTR"的适当转换函数该怎么解决?

VS2008 C++中 inet_addr()函数用法。 inet_addr: 不能将参数 1 从“CString”转换为“const char *”

string.format用法

VS2010-MFC(MFC常用类:CString类)