VC++ 基礎知識

來源:互聯網
上載者:User
文章目錄
  • Decimal To Hex
  • Hex To Decimal
  • Decimal to time
  • String to Hex
  • Hex to CString
  • COleVariant to CString
  • CString to char pointer
  • char pointer to CString
  • Double to CString including the fractional part
  • Double To CString
  • CString To Double
  • CString to LPCSTR
  • CString to LPSTR
  • CString to WCHAR*
  • LPTSTR to LPWSTR
  • string to BSTR
  • CString to BSTR
  • _bstr_t to CString
  • Char array to integer
  • Char array to float
  • Char Pointer to double
  • Char Pointer to integer
  • Char Pointer to long
  • Char* to BSTR
  • Float to WORD and Vice Versa

1.符號就不多說明了 :: 範圍分辨符;. 訪問類成員 ;-> 指標用之。

2.琳琅滿目的類型:

  
  LPSTR          32-bit指標,指向一個字串
  LPCTSTR       32-bit指標,指向一個常數字串,此字串可移植到Unicode和DBCS(雙位元組字集),指向每字元16位元組的const類型字串的指標
  LPTSTR         32-bit指標,指向一個字串,此字串可移植到Unicode和DBCS(雙位元組字集),指向每字元16位元組的字串的指標.
  LPCSTR         32-bit指標,指向一個常數字串,指向每字元8位元組的const類型字串的指標。
  LPWSTR         以\0結束的Unicode字串,即雙位元組

 

  在Windows資料類型中有以下描述:  
  Windows   Data   Types       
  LPCSTR   :   Pointer   to   a   constant   null-terminated   string   of   8-bit   Windows   (ANSI)   characters.    
  LPCTSTR   :     An   LPCWSTR   if   UNICODE   is   defined,   an   LPCSTR   otherwise.    
  LPCWSTR   :   Pointer   to   a   constant   null-terminated   string   of   16-bit   Unicode   characters.      
  LPTSTR   :   An   LPWSTR   if   UNICODE   is   defined,   an   LPSTR   otherwise.    
  LPSTR   :   Pointer   to   a   null-terminated   string   of   8-bit   Windows   (ANSI)   characters.      
  LPWSTR   :   Pointer   to   a   null-terminated   string   of   16-bit   Unicode   characters.    

 

  CHAR   8bit  ansi字元
  WCHAR 16bit unicode字元
  TCHAR 如果定義了UNICODE宏(#def UNICODE),TCHAR 等同於WCHAR ,如果沒有定義unicode宏,
  TCHAR 等同於CHAR  

 

  LPCSTR:  等價於   const   char   *   唯讀ANSI字串指標  
  CString:  MFC中對字串的封裝的類,可以是ANSI也可以是Uncode  
  char*     ANSI字串指標  
  char[]    ANSI字元數組,可以當成指標字串來使用  
  CHAR     等價於char,單個ANSI字元

 

  L("Hello")   表示轉換成寬字元,用以支援Unicode

3.類型轉換: 

Decimal ConversionsDecimal To Hex
// Use _itoa( ) function and set radix to 16.char hexstring[10]; int number = 30;itoa( number, hexstring, 16);// In hexstring is 1e.
Hex To Decimal
// You can use strtol function and you can specify base. char * hexstring= "ABCDEF";char * p;int number = strtol(hexstring, &p,16);//  A function that does thisbool HexToDecimal (char* HexNumber, int& Number){     char* pStopString;     Number = strtol (HexNumber, &pStopString, 16);    return (bool)(Number != LONG_MAX);}
Decimal to time
char *DecToTime(float fTime, char *szTime){    int nHrs, nMin, nSec;     fTime *= 3600;    nHrs = (int)fTime / 3600;    nMin = (int)(fTime - nHrs * 3600) / 60;    nSec = (int)(fTime - nHrs * 3600 - nMin * 60);    wsprintf(szTime, "%02d.%02d.%02d Hrs.Min.Sec.", nHrs, nMin, nSec);    return szTime;}
String ConversionsString to Hex
sscanf(string, %04X, &your_word16);// where string = your string and // 04 = length of your string and X = hex
Hex to CString
CString Str;unsigned char Write_Buff[1];Write_Buff[0] = 0x01;Str.Format("0x0%x",Write_Buff[0]);
COleVariant to CString
CString strTemp;COleVariant Var;Var = "FirstName";strTemp = Var.bstrVal;AfxMessageBox(strTemp);
CString to char pointer
CString MyString = "ABCDEF";char * szMyString = (char *) (LPCTSTR) MyString;
char *pBuffer = new char[1024];CString strBuf = "Test";pBuffer = strBuf.GetBuffer(sizeof(pBuffer));
char pointer to CString
char * mystring = "12345";CString string = mystring;
Double to CString including the fractional part
CString strValue,strInt, strDecimal;int decimal,sign;double dValue = 4.125;strValue = _fcvt(dValue,6,&decimal,&sign);     // Now decimal contains 1 because there is     // only one digit before the .strInt = strValue.Left(decimal); // strInt contains 4strDecimal = strValue.Mid(decimal); // strDecimal contains 125CString strFinalVal;strFinalVal.Format("%s.%s",strInt,strDecimal);     // strFinalVal contains 4.125
Double To CString
CString strValue;int decimal,sign;double dValue = 123456789101112;strValue = _ecvt(dValue,15,&decimal,&sign);
CString To Double
strValue = "121110987654321";dValue = atof(strValue);
CString to LPCSTR
CString str1 = _T("My String");int nLen = str1.GetLength();LPCSTR lpszBuf = str1.GetBuffer(nLen);// here do something with lpszBuf...........str1.ReleaseBuffer();
CString to LPSTR
CString str = _T("My String");int nLen = str.GetLength();LPTSTR lpszBuf = str.GetBuffer(nLen);// here do something with lpszBuf...........str.ReleaseBuffer();
CString to WCHAR*
CString str = "A string here" ;LPWSTR lpszW = new WCHAR[255];LPTSTR lpStr = str.GetBuffer( str.GetLength() );int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL);MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpszW, nLen);AFunctionUsesWCHAR( lpszW );delete[] lpszW;
LPTSTR to LPWSTR
int nLen = MultiByteToWideChar(CP_ACP, 0, lptStr, -1, NULL, NULL);MultiByteToWideChar(CP_ACP, 0, lptStr, -1, lpwStr, nLen);
string to BSTR
string ss = "Girish";BSTR _bstr_home = A2BSTR(ss.c_str());
CString to BSTR
CString str = "whatever" ;BSTR resultsString = str.AllocSysString(); 
_bstr_t to CString
#include <ANSIAPI.H>#include <comdef.h>_bstr_t bsText("Hai Bayram");CString strName;W2A(bsText, strName.GetBuffer(256), 256);strName.ReleaseBuffer();AfxMessageBox(strName);char szFileName[256];GetModuleFileName(NULL,szFileName,256);AfxMessageBox(szFileName);
Character arraysChar array to integer
char MyArray[20];int nValue;nValue = atoi(MyArray);
Char array to float
char MyArray[20];float fValue;fValue = atof(MyArray);
Char Pointer to double
char *str = " -343.23 "; double dVal; dVal = atof( str );
Char Pointer to integer
char *str = " -343.23 "; int iVal;iVal = atoi( str );
Char Pointer to long
char *str = "99999"; long lVal; lVal = atol( str );
Char* to BSTR
char * p = "whatever";_bstr_t bstr = p;
Float to WORD and Vice Versa
float fVar;WORD wVar;fVar = 247.346;wVar = (WORD)fVar; //Converting from float to WORD.     //The value in wVar would be 247wVar = 247;fVar = (float)fVar; //Converting from WORD to float.     //The value in fVar would be 247.00

 

 

 

 

   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.