Visual C++ 基础数据类型的转换

16.1如何将基本数据类型转换成CString类型

用CString的Format方法

void CDemoView::OnDraw(CDC* pDC)
{int a = 100;double b = 1.23;//将整型转换成CStringCString str1 = _T("");str1.Format(_T("%d"), a);//将实型转换成CStringCString str2 = _T("");str2.Format(_T("%f"), b);CString strText = _T("");strText.Format(_T("str1 = %s"), str1);pDC->TextOut(100, 50, strText);strText.Format(_T("str2 = %s"), str2);pDC->TextOut(100, 100, strText);
}

16.2如何将CString类型转换成基本数据类型

atoi:Convert a string to integer. 
参考:http://baike.baidu.com/view/653935.htm

void CDemoView::OnDraw(CDC* pDC)
{CString str1 = _T("100");CString str2 = _T("1.23");//将CString转换成整型int a = atoi(str1);//将CString转换成实型double b = atof(str2);CString strText = _T("");strText.Format(_T("a = %d"), a);pDC->TextOut(100, 50, strText);strText.Format(_T("b = %f"), b);pDC->TextOut(100, 100, strText);
}

 

16.3如何将TCHAR类型转换成CString类型

void CDemoView::OnDraw(CDC* pDC)
{TCHAR sz[] = _T("Hello world!");//直接赋值CString str1 = sz;//调用CString::Format函数CString str2 = _T("");str2.Format(_T("%s"), sz);    CString strText = _T("");strText.Format(_T("str1 = %s"), str1);pDC->TextOut(100, 50, strText);strText.Format(_T("str2 = %s"), str2);pDC->TextOut(100, 100, strText);
}

16.4如何将CString类型转换成TCHAR类型

 

void CDemoView::OnDraw(CDC* pDC)
{CString str = _T("Hello world!");//强制转换LPTSTR psz1 = (LPTSTR)(LPCTSTR)str;//调用CString::GetBuffer函数LPTSTR psz2 = str.GetBuffer(str.GetLength());str.ReleaseBuffer();CString strText = _T("");strText.Format(_T("psz1 = %s"), psz1);pDC->TextOut(100, 50, strText);strText.Format(_T("psz2 = %s"), psz2);pDC->TextOut(100, 100, strText);
}

16.5如何将TCHAR类型转换成BSTR类型

 

void CDemoView::OnDraw(CDC* pDC)
{TCHAR sz[] = _T("Hello world!");//调用ConvertStringToBSTR函数BSTR bstr1 = _com_util::ConvertStringToBSTR(sz);//使用_bstr_tBSTR bstr2 = _bstr_t(sz);CString strText = _T("");strText.Format(_T("bstr1 = %s"),  (CString)bstr1);pDC->TextOut(100, 50, strText);strText.Format(_T("bstr2 = %s"),  (CString)bstr2);pDC->TextOut(100, 100, strText);
}

 

16.6如何将BSTR类型转换成TCHAR类型

void CDemoView::OnDraw(CDC* pDC)
{BSTR bstr = L"Hello world!";//调用ConvertBSTRToString函数LPTSTR psz = _com_util::ConvertBSTRToString(bstr);CString strText = _T("");strText.Format(_T("psz = %s"), psz);pDC->TextOut(100, 50, strText);
}

 

16.7 如何将BSTR类型转换成CString类型

SysAllocString和SysFreeString 

void CDemoView::OnDraw(CDC* pDC)
{BSTR bstr = ::SysAllocString(L"Hello world!");//强制转换CString str = (CString)bstr;CString strText = _T("");strText.Format(_T("str = %s"), str);pDC->TextOut(100, 50, strText);::SysFreeString(bstr);
}

 

16.8如何将CString类型转换成BSTR类型

void CDemoView::OnDraw(CDC* pDC)
{CString str = _T("Hello world!");//调用CString::AllocSysString函数BSTR bstr = str.AllocSysString();CString strText = _T("");strText.Format(_T("bstr = %s"), (CString)bstr);pDC->TextOut(100, 50, strText);::SysAllocString(bstr);
}

 

16.9 如何将DWORD类型转换成WORD类型

LOWORD和HIWORD

void CDemoView::OnDraw(CDC* pDC)
{//将1个DWORD类型数据分解成2个WORD类型数据DWORD dwValue = 0xFFAA5500;WORD wLow = LOWORD(dwValue);WORD wHigh = HIWORD(dwValue);CString strText = _T("");strText.Format(_T("DWORD:0x%08X"), dwValue);pDC->TextOut(100, 50, strText);strText.Format(_T("low-order word:0x%04X"), wLow);pDC->TextOut(100, 100, strText);strText.Format(_T("high-order word:0x%04X"), wHigh);pDC->TextOut(100, 150, strText);
}

16.10 如何将WORD类型转换成BYTE类型

LOBYTE和HIBYTE 

void CDemoView::OnDraw(CDC* pDC)
{//将1个WORD类型数据分解成2个BYTE类型数据WORD wValue = 0xFF00;BYTE bLow = LOBYTE(wValue);BYTE bHigh = HIBYTE(wValue);CString strText = _T("");strText.Format(_T("WORD:0x%04X"), wValue);pDC->TextOut(100, 50, strText);strText.Format(_T("low-order byte:0x%02X"), bLow);pDC->TextOut(100, 100, strText);strText.Format(_T("high-order byte:0x%02X"), bHigh);pDC->TextOut(100, 150, strText);
}

 

16.11如何将WORD类型组合成DWORD类型

 

void CDemoView::OnDraw(CDC* pDC)
{//将2个WORD类型数据组合成1个DWORD类型数据WORD wLow = 0x5500;WORD wHigh = 0xFFAA;DWORD dwValue = MAKELONG(wLow, wHigh);CString strText = _T("");strText.Format(_T("low-order word:0x%04X"), wLow);pDC->TextOut(100, 50, strText);strText.Format(_T("high-order word:0x%04X"), wHigh);pDC->TextOut(100, 100, strText);strText.Format(_T("DWORD:0x%08X"), dwValue);pDC->TextOut(100, 150, strText);
}

16.12 如何将BYTE类型转换成WORD类型

 

void CDemoView::OnDraw(CDC* pDC)
{//将2个BYTE类型数据组合成1个WORD类型数据BYTE bLow = 0x00;BYTE bHigh = 0xFF;WORD wValue = MAKEWORD(bLow, bHigh);CString strText = _T("");strText.Format(_T("low-order byte:0x%02X"), bLow);pDC->TextOut(100, 50, strText);strText.Format(_T("high-order byte:0x%02X"), bHigh);pDC->TextOut(100, 100, strText);strText.Format(_T("WORD:0x%04X"), wValue);pDC->TextOut(100, 150, strText);
}

16.13 如何将COLORREF类型转换成RGB分量

 

void CDemoView::OnDraw(CDC* pDC)
{COLORREF cr = RGB(255, 128, 0);//R分量BYTE RED = GetRValue(cr);//G分量BYTE GREEN = GetGValue(cr);//B分量BYTE BLUE = GetBValue(cr);CString strText = _T("");strText.Format(_T("COLORREF值:0x%08X"), cr);pDC->TextOut(100, 50, strText);strText.Format(_T("R分量:0x%02X"), RED);pDC->TextOut(100, 100, strText);strText.Format(_T("G分量:0x%02X"), GREEN);pDC->TextOut(100, 150, strText);strText.Format(_T("B分量:0x%02X"), BLUE);pDC->TextOut(100, 200, strText);
}

16.14 如何给VARIANT类型赋值

 

void CDemoView::OnDraw(CDC* pDC)
{VARIANT var;CString strText = _T("");//初始化VARIANT类型变量VariantInit(&var);//给VARIANT类型变量赋值var.vt = VT_I4;var.lVal = (long)100;strText.Format(_T("var = %d"), var.lVal);pDC->TextOut(100, 50, strText);//清除VARIANT类型变量VariantClear(&var);//给VARIANT类型变量赋值var.vt = VT_R4;var.fltVal = 1.23f;strText.Format(_T("var = %f"), var.fltVal);pDC->TextOut(100, 100, strText);//改变VARIANT类型变量数据类型VariantChangeType(&var, &var, 0, VT_R8);strText.Format(_T("var = %f"), var.dblVal);pDC->TextOut(100, 150, strText);
}

16.15 如何将BYTE转换成KB、MB和GB

 

void CDemoDlg::OnTest() 
{int nNum1 = GetDlgItemInt(IDC_NUM1);CString strNum2 = _T("");//转换成GBif (nNum1 > GB){strNum2.Format(_T("%0.2fGB"), (double)nNum1 / GB);}//转换成MBelse if (nNum1 > MB){strNum2.Format(_T("%0.2fMB"), (double)nNum1 / MB);}//转换成KBelse if (nNum1 > KB){int n = nNum1 / KB;strNum2.Format(_T("%0.2fKB"), (double)nNum1 / KB);}else{strNum2.Format(_T("%dByte"), nNum1);}SetDlgItemText(IDC_NUM2, strNum2);
}

转载于:https://www.cnblogs.com/jack-jia-moonew/p/4261843.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 片段_python片段程序

from PIL import Imageimport re#给图片添加一层蒙版,可以设置位置,尺寸,颜色,透明度def img_add_glass(img,new_imgglass,glass_factor0.3,glass_color#ffffff,glass_x0,glass_y0,glass_width300,glass_height100):imageobjectif…

linux ruby 安装路径,Linux(CentOS 7)安装ruby

首先下载Linux版ruby源码“ruby-2.7.0.tar.gz”,上传并解压到/usr/local路径下:tar -xzvf ruby-2.7.0.tar.gz安装编译依赖工具,gcc、gcc-c、gdbm-devel、readline-devel和openssl-devel:yum install gccyum install gcc-cyum inst…

开心一笑

1转载于:https://www.cnblogs.com/luquanmingren/p/4261912.html

酱油和gbt酱油哪个好_酱油越贵越好?认准瓶身这4处,轻松挑到好酱油!

买酱油这件事,爷叔阿姨们都不陌生。现在市面上酱油品种很多,除了普通的生抽、老抽以外,还有些别的口味,比如海鲜酱油、菌菇酱油等等,价格比普通的还高出不少,这些酱油真的更鲜更好吗?买酱油的2大…

linux网站465端口是什么端口,发送端口25,465,587端口疑问解答

25端口(SMTP):25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。如今绝大多数邮件服务器都使用该协议。当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25号…

分析DuxCms之AdminController

1 2 /**3 * 后台模板显示 调用内置的模板引擎显示方法,4 * access protected5 * param string $templateFile 指定要调用的模板文件6 * return void7 */8 protected function adminDisplay($templateFile) {9 //获取菜单 10 …

在python语言中不能作为变量名的是什么_4、 在 Python 中可以使用 if 作为变量名。 (1.0分)_学小易找答案...

【判断题】2、 Python 变量使用前必须先声明 , 并且一旦声明就不能在当前作用域内改变其类型。 (1.0分)【填空题】Python语句.join(list(hello world!))执行的结果是____________________。 (1.0分)【填空题】Python语句list(range(1,10,3))执行结果为___________________。 (1…

hdu 3572 Task Schedule 网络流

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid3572Our geometry princess XMM has stoped her study in computational geometry to concentrate on her newly opened factory. Her factory has introduced M new machines in order to process the coming …

linux格式化ext4分区工具,linux学习笔记-磁盘分区、格式化与挂载

磁盘分区、格式化与挂载磁盘分区、格式化与挂载一、给磁盘分区分区工具介绍fdisk:分区时只修改分区表信息;操作简单;不支持大于2T的分区;只能使用交互式来分区。parted:直接将分区信息写入磁盘;操作比较复杂;支持大于2…

uml 时序图_程序猿都应学习的语言:看 25 张图学 UML

作者 | 逸珺责编 | 屠敏来源 | 嵌入式客栈作为程序猿都最好掌握的一门语言,那就是UML(Unified Modeling Language),统一建模语言(UML)是软件工程领域中一种通用的开发建模语言,旨在提供一种可视化系统设计的标准方法。是开发人员、系统设计人…

was6 linux 卸载,重新安装was61

昨天折腾一天,或者是少安装了compat-libstdc-33包导致app2出不来安装向导,或者是修改了主机名导致./addNode.sh xxx执行异常,诸多不爽后,决定从头再来!手动删除/was下所有文件,导致再次安装时,报…

新服务器的配置

新服务器的安装好那三款软件后还是打不开会报错,去服务器管理网站增加执行权即可。 转载于:https://www.cnblogs.com/longhun/p/4266665.html

最大公约数python语言算法_使用Python求解最大公约数的实现方法

这篇文章主要介绍了使用Python求解最大公约数的实现方法,包括用Python表示欧几里得算法和Stein算法的求解原理.1. 欧几里德算法欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:定理: gcd(a, b) …

Linux下好用的日志库,我使用過的Linux命令之tailf - 跟蹤日志文件/更好的tail -f版本...

用途說明tailf命令幾乎等同於tail -f,嚴格說來應該與tail --followname更相似些。當文件改名之后它也能繼續跟蹤,特別適合於日志文件的跟蹤(follow the growth of a log file)。與tail -f不同的是,如果文件不增長,它不會去訪問磁盤…

Android学习笔记(四十):Preference的使用

Preference直译为偏好,博友建议翻译为首选项。一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依旧有效,无须用户再一次进行配置或选择。Android提供preference这个键值对的方式来处理这样的情况&#xff…

telegr怎么连接不上_无线网密码正确但是手机连接不上wifi?

现在企业、家庭、餐厅、宾馆到处都有WiFi无线网络信号,为大家的电脑、手机提供免费的无线网络服务,但是有的时候明明有信号而无线网密码正确却连不上,是多么痛苦的一件事情。那么无线网密码正确但是手机连接不上wifi怎么回事?下面…

linux录制远程麦克风声音,在Linux上录制麦克风到wav或mp3文件?

Niki Yoshiuc..5它当然是可能的,但它并不像从文件中读取那么简单.最简单的方法是使用一个库,例如PortAudio.PortAudio是跨平台的,使用起来相当简单.PortAudio将允许您从麦克风录制,但它对文件格式一无所知.为此你需要另一个图书馆.我从来没有使用它,但libsndfile库可能会做你需…

hdu3652(数位dp)

要求找出范围内含有“13”且能被13整除的数字的个数 可以使用数位dp dp[i][j][0] 表示长度为i,余数为j,不含13的数字的个数 dp[i][j][1] 表示长度为i,余数为j,3开头的数字的个数 dp[i][j][2] 表示长度为i,余数为j&…

怎么查看电脑是不是禁ping_怎么查看电脑内存的大小,找回丢失的内存,电脑小技巧...

小A自己组装了一台电脑,配件都是在jd买了。他高高兴兴的安装了系统准备开始体验一把,同事突然问,你的电脑内存是多少,他点来点去也没找到答案。他只知道他买了一个8G的内存条。.我们一般查看内存有两个地方。一我们的电脑 属性 安…

Linux 创建网页服务,Linux使用Node.js建立访问静态网页的服务实例详解

Linux使用Node.js建立访问静态网页的服务实例详解一、安装node.js运行所需要的环境,:二、创建node目录(/node/www),并在目录下创建node.js服务文件server.jsvar fs require(fs);//引入文件读取模块var documentRoot ‘/node/www;//需要访问…