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

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

用CString的Format方法

void CDemoView::OnDraw(CDC* pDC)
{
    int a = 100;
    double b = 1.23;
    //将整型转换成CString
    CString str1 = _T("");
    str1.Format(_T("%d"), a);
    //将实型转换成CString
    CString 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_t
    BSTR 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("");
    //转换成GB
    if (nNum1 > GB)
    {
        strNum2.Format(_T("%0.2fGB"), (double)nNum1 / GB);
    }
    //转换成MB
    else if (nNum1 > MB)
    {
        strNum2.Format(_T("%0.2fMB"), (double)nNum1 / MB);
    }
    //转换成KB
    else 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);
}
时间: 2024-08-10 10:10:41

Visual C++ 基础数据类型的转换的相关文章

好记性不如烂笔头1-JAVA基础数据类型和转换

一.基础数据类型 1.布尔型(boolean) 布尔型(boolean) :true/false,不可以以0或非0的数字代替:不能进行数据之间的转换. 2.整数类型 整型默认为int型,而long类型表示的范围要超出int表数范围,所以,声明long类型时,常量后要加L(l). 如:long l1=12345678 //  数值在int范围之内,还不会出错 longl2=8888888888;//  数值在int范围之外,会出错 longl3=8888888888L; //正确 3.浮点类型 浮

Java基础数据类型二进制转换

前言: 本文主要介绍java基础类型的二进制转换和二进制的基本概念. 二进制: 1,二进制是以0和1为码,逢2进1,比如3=11=1*2+1. 2,在计算机当中其它进制的算法基本基于2进制,因为计算机只认识0和1,比如16进制数则意味着一位16进制码由4位2进制码数表示. 3,在Java语言中byte代表最小计量单位,byte由8位2进制数组成. Java基本数据类型与表示范围(boolean忽略) 1,byte(整型):8位,short(整型):16位,char(字符型):16位,int(整型

语言基础:C#输入输出与数据类型及其转换

今天学习了C#的定义及特点,Visual Studio.Net的集成开发环境和C#语言基础. C#语言基础资料——输入输出与数据类型及其转换 函数的四要素:名称,输入,输出,加工 输出 Console.Write("这是我的第一个程序");//不换行,(不要漏掉:)(所有的符号全都用英文)(方法,也就是函数后面必须跟括号) Console.WriteLine("第二句");//输出这句后会换行 “这是我的第一个程序”后不换行,紧跟“第二句”,“第二句”换行,光标进入

C#基础(八)——C#数据类型的转换

C#数据类型的转换主要有以下几种方式: 1.强制转换 注意:char类型不能强制转换成int,如果使用强制转化,得到的是原整数的ASCII码值. 2.class.parse(string类型的变量),只能转换字符串,任何类型数据可以先利用.tostring()方法转化成字符串,然后利用“类型.Parse(string 类型变量)”转成自己想要的类型.使用该方法切忌的一点就是只能处理字符串内容,而且字符串内容只能在目的类型可表示的范围之内. 3.int.TryParse(string s, out

Java基础——数据类型之间的转换

Java数据类型分为三大类,即布尔型.字符型和数值型.其中数值型又分为整型和浮点型.Java的基本数据类型(8种)为布尔型boolean(1字节):字符型char(2字节):整型byte(1字节).short(2字节).int(4字节).long(8字节):浮点型float(4字节).double(8字节).此外,编程时还经常用到两种类变量,String和Date. Java数据类型的转换一般分三种,分别是:简单数据类型之间的转换.字符串与其他数据类型的转换.其他实用数据类型的转换. 简单数据类

day02_变量_基本数据类型_数据类型的转换_Scanner_20150731

回顾: 昨天主要讲了3个方面的内容: 1.Linux 操作系统.开源的.免费 服务器端 目录.挂载点.安全级别高 /:根目录 /home/soft01:主目录/家 2.java开发环境 1).java源文件,经过编译,生成.class字节码文件 JVM加载.class并运行.class 跨平台.一次编程到处使用 2)JVM:java虚拟机 加载并运行.class JRE:java运行环境 除了包含JVM以外还包含运行java程序所需要的必须的环境 JRE=JVM+java系统类库 JDK:jav

1.Visual FoxPro 基础

1.菜单栏的使用 ******************************* 方法一:鼠标点击 方法二:快捷键  Alt+F打开文件菜单 Alt+E打开编辑菜单 Alt+V打开显示菜单 Alt+P打开程序菜单 Alt+H打开帮助菜单 Ctrl+N新建 Ctrl+O打开 Ctrl+p打印******************************* 2.工具栏的使用 ******************************* 菜单栏使用方法:鼠标单击菜单栏 显示/隐藏菜单:显示——>工具栏

Python中的基础数据类型

Python中基础数据类型 1.数字 整型a=12或者a=int(2),本质上各种数据类型都可看成是类,声明一个变量时候则是在实例化一个类. 整型具备的功能: class int(object): """ int(x=0) -> int or long int(x, base=10) -> int or long Convert a number or string to an integer, or return 0 if no arguments are gi

Python 之路 Day02 -基础数据类型及编码详解

  基础篇 本章大纲: 字符编码和解释器编码详解 变量命名规则 基础数据类型(一) int 基础数据类型(二)  string 基础数据类型(三) bool 基础数据类型(四) list 基础数据类型(五) tuple 基础数据类型(六) dict 基础数据类型(七) set 补充可迭代对象的循环连接及enumerate输出 字符编码和解释器编码详解 一,编码的重要性: 1.1 文件编码和字符编辑编码及读取编码 #!/usr/bin/env python #-*- coding:utf-8 -*