久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3362|回復: 0
收起左側

CString--C++數據類型轉換詳解

[復制鏈接]
ID:72519 發表于 2015-1-23 02:11 | 顯示全部樓層 |閱讀模式
作者:~風中的葉~
一、自動轉換和強制轉換:
1.1數據類型自動轉換:
原則:短數據------à長數據

1.2數據類型強制轉換:
原則:長變短、有變無都是把存儲的數據直接從低位到高位復制(符號位也作為數據處理)。
例:int i;    short j;  j=(short)i;
例:longi;    i=1L;
二、數據轉換為字符串(數組)
2.1轉成十進制:
int i=100;
CString str;
str.Format(_T("%d"),i); //轉換成十進制
  %c                 單個字符
  %d                 十進制整數(int)
  %ld                十進制整數(long)
  %f                 十進制浮點數(float)
  %lf                十進制浮點數(double)
  %o                 八進制數
  %s                 字符串
  %u                 無符號十進制數
   %x                 十六進制數
或者
int i=100;
CString str;
char ch[8];
sprintf(ch,"%d",i);//只能轉成數組形式
str=ch;
或者
char ch[8];
char *chp;
chp=itoa(i,ch,10);
2.2轉成十六進制:
int i=100;
CString str;
str.Format( _T("%.2x"),i); //轉換兩位十六進制
三、數據串之間的轉換
3.1字符串轉換為數組:
CString str=_T("12好asdf");
    char ch[16]={0x00};
    WideCharToMultiByte ( CP_ACP,                //ANSI代碼頁
                          WC_COMPOSITECHECK,     //檢查非映射復合字符
                          str,                   //Unicode
                        str.GetLength(),      //Unicode 長度(-1 意思是串以0x00結尾)
                          ch,                   //目的char字符串
                          sizeof(ch),          //緩沖大小
                          NULL,                //缺省字符串
                          NULL );              //忽略這個參數
3.2數組轉換為字符串:
char ch[8]="abc";//注意以’\0’=0結尾
CString str= (CA2CT)ch;
四、字符串其他處理
http://msdn.microsoft.com/zh-cn/library/tzzky29w(v=vs.80).aspx
4.1取字符串長度:    int len = str.GetLength();
4.2拼接字符串:      CString str= str1 + str2;
4.3在字串中指定索引位插入指定字符:CString str.Insert(1,_T("a"));//在1號位之前插入a
4.4截取字串的一部分:CString substr=str.Left(2);//從左側截取兩個字節的數據
CString substr=str.Right(2); //從右側截取兩個字節的數據
CString substr=str.Mid(1,2); //參數1為左起始位數,參數2為截取幾位
4.5清除字串前后空格:str.Trim();//移除前后空格
清除字串前空格:   str.TrimLeft();//移除后空格
清除字串前空格:   str.TrimRight();//移除前空格
str.Remove(' ');//移除所有空格
4.6字符串替換:      str.Replace(_T("12"),_T("34"));
4.7字符串刪除:      str.Delete(1,6);
五、 字符串轉換為數據
5.1字符串轉換為整型:

int           i=atoi(str);//ANSI類型 int atoi(const char *nptr);
long          i=atol(str);//ANSI類型 long atol(const char *nptr);
double        i=atof(str);//ANSI類型 double atof(const char *nptr);
long          i=strtol(str);//ANSI類型 long int strtol(const char *nptr,char **endptr,int base);
unsigned long i=strtoul(str,NULL);//ANSI類型 unsigned long strtoul(const char *nptr,char **endptr,int base);  
double        i=strtod(str,NULL);//ANSI類型 double strtod(const char *nptr,char **endptr);
int           i=_wtoi(str);//Unicode碼
int           i=_ttoi(str); //Unicode碼
5.2字符串按十六進制轉換為整型:
long         i=strtol(str,0,16);//ANSI類型
    unsigned long i=strtoul(str,0,16);//ANSI類型
    long          i=wcstol(str,0,16);//Unicode碼
    long          i=_tcstol(str,0,16);//Unicode碼
六、其他轉換 :
TCHAR是一種字符串類型,它讓你在以MBCS和UNICODE來build程序時可以使用同樣的代碼,不需要使用繁瑣的宏定義來包含你的代碼,而char代表ASCII的字符
#ifdef UNICODE
   typedef wchar_t TCHAR;
   #else
   typedef char TCHAR;
   #endif

所以用MBCS來build時,TCHAR是char,使用UNICODE時,TCHAR是wchar_t.
至于String,CString他們都是一種封裝了字串處理的操作!
你可以打開他們的源代碼找尋究竟!
CString屬于VC的類庫
string是標準C++的類庫
string.h是C的庫函數。

研究它們的源代好些!
TCHAR,char是可以同整型互換的類型。
String,CString代表了一塊內存區域。
TCHAR 賦值
#include <tchar.h>
TCHAR szWindowText[256]=_T("QQ2006");
char*、TCHAR*轉換CString
CString str(****)
下面詳細寫一下其它轉換
  • /* *********************************************************************
  • * 函數: TransCStringToTCHAR
  • * 描述:將CString 轉換為 TCHAR*
  • * 日期:
  • ***********************************************************************/
  • TCHAR* CPublic::CString2TCHAR(CString &str)
  • {
  • int iLen = str.GetLength();
  • TCHAR* szRs = new TCHAR[iLen];
  • lstrcpy(szRs, str.GetBuffer(iLen));
  • str.ReleaseBuffer();
  • return szRs;
  • }

  • /***********************************************************************
  • * 函數: THCAR2Char
  • * 描述:將TCHAR* 轉換為 char*
  • * 日期:
  • ***********************************************************************
  • */
  • char* CPublic::THCAR2char(TCHAR* tchStr)
  • {
  • int iLen = 2*wcslen(tchStr);//CString,TCHAR漢字算一個字符,因此不用普通計算長度
  • char* chRtn = new char[iLen+1]
  • wcstombs(chRtn,tchStr,iLen+1);//轉換成功返回為非負值
  • return chRtn;
  • }


  • /*
  • ***********************************************************************
  • * 函數: CString2char
  • * 描述:將CString轉換為 char*
  • * 日期:
  • ***********************************************************************
  • */
  • char* CPublic::CString2char(CString &str)
  • {
  • int len = str.GetLength();
  • char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的長度中漢字算一個長度
  • memset(chRtn, 0, 2*len+1);
  • USES_CONVERSION;
  • strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer()));
  • return chRtn;
  • }


//參考
///////////////////////
//Pocket PC上的UNICODE和ANSI字符串
////////////////////////
  • /*
  • ***********************************************************************
  • * 函 數 名:GetAnsiString
  • * 描 述:將CString(unicode)轉換為char*(ANSI)
  • * 參 數:CString &s 要轉換的CString
  • * 返 回 值:返回轉換結果
  • * 創建日期:
  • * 最后修改:
  • ***********************************************************************
  • */
  • char* GetAnsiString(const CString &s)
  • {
  • int nSize = 2*s.GetLength();
  • char *pAnsiString = new char[nSize+1];
  • wcstombs(pAnsiString, s, nSize+1);
  • return pAnsiString;
  • }


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成年人在线播放 | 国产精品毛片久久久久久久 | 欧美一级视频免费看 | 中文字幕av一区二区三区 | 久久综合国产 | 久久精品国产a三级三级三级 | 久久99精品视频 | av黄色在线| 九九久久精品 | 九九综合 | 日韩中文在线 | 黄久久久 | 中文字幕一区二区三区乱码在线 | 成人在线视频免费播放 | 一区二区免费在线视频 | a级在线观看 | 日韩在线欧美 | 日韩一级一区 | 国内精品久久久久久 | 久操伊人 | 欧美日韩一区二区三区四区 | 国产在线一区二 | 狠狠色狠狠色综合系列 | 国产精品国产三级国产aⅴ中文 | 国内自拍偷拍一区 | 宅男伊人 | av免费看在线| 午夜欧美一区二区三区在线播放 | 亚洲一区欧美一区 | 欧美在线观看一区 | 国产福利视频在线观看 | 高清视频一区二区三区 | 黄色片视频 | 亚洲欧美一区二区三区视频 | 亚洲国产视频一区二区 | 亚洲精品色 | 久久久久成人精品 | 精品久久久久久久久亚洲 | 欧美综合在线观看 | 成人国产精品 | 尹人av|