vc++中char*和CString轉換
CString 是一種很特殊的 C++ 物件,它裡面包含了三個值:一個指向某個資料緩衝區的指標、一個是該緩衝中有效的字元記數(它是不可存取的,是位於 CString 地址之下的一個隱藏區域)以及一個緩衝區長度。 有效字元數的大小可以是從0到該緩衝最大長度值減1之間的任何數(因為字串結尾有一個NULL字元)。字元記數和緩衝區長度被巧妙隱藏。
(1) char*轉換成CString
若將char*轉換成CString,除了直接賦值外,還可使用CString::Format進行。例如:
char chArray[] = "Char test";
TCHAR * p = _T("Char test");( 或LPTSTR p = _T("Char test");)
CString theString = chArray;
theString.Format(_T("%s"), chArray);
theString = p;
(2) CString轉換成char*
若將CString類轉換成char*(LPSTR)型別,常常使用下列三種方法:
方法一,使用強制轉換。例如:
CString theString( (_T("Char test "));
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;
方法二,使用strcpy。例如:
CString theString( (_T("Char test "));
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz, theString);
需要說明的是,strcpy(或可移值的_tcscpy)的第二個引數是 const wchar_t* (Unicode)或const char* (ANSI),系統編譯器將會自動對其進行轉換。
方法三,使用CString::GetBuffer。
如果你需要修改 CString 中的內容,它有一個特殊的方法可以使用,那就是 GetBuffer,它的作用是返回一個可寫的緩衝指標。 如果你只是打算修改字元或者截短字串,例如:
CString s(_T("Char test "));
LPTSTR p = s.GetBuffer();
LPTSTR dot = strchr(p, ''.'');
// 在這裡新增使用p的程式碼
if(p != NULL)
*p = _T('');
s.ReleaseBuffer(); // 使用完後及時釋放,以便能使用其它的CString成員函式
在 GetBuffer 和 ReleaseBuffer 之間這個範圍,一定不能使用你要操作的這個緩衝的 CString 物件的任何方法。因為 ReleaseBuffer 被呼叫之前,該 CString 物件的完整性得不到保障。
注:_T:如果編譯時指定生成UNICODE版本,則將字串轉換成UNICODE;如果編譯是沒有指定UNICODE,則就是一般的窄字元。
相關推薦
vc++中char*和CString轉換
CString 是一種很特殊的 C++ 物件,它裡面包含了三個值:一個指向某個資料緩衝區的指標、一個是該緩衝中有效的字元記數(它是不可存取的,是位於 CString 地址之下的一個隱藏區域)以及一個緩衝區長度。 有效字元數的大小可以是從0到該緩衝最大長度值減1之間的任何
vc中字串和數字轉換的函式:atoi,atol,strtod,strtol,strtoul 型別轉換
strtoul(將字串轉換成無符號長整型數)相關函式 atof,atoi,atol,strtod,strtol表頭檔案 #include<stdlib.h>定義函式 unsigned long int strtoul(const char *nptr,char **endp
BSTR、char*和CString轉換(包括多位元組和Unicode)
(1) char*轉換成CString 若將char*轉換成CString,除了直接賦值外,還可使用CString::Format進行。例如:view plaincopy char chArray[] = "This is a test"; char * p = "Th
VC 中char 與 wchar的轉換
char 轉 WCHAR WCHAR * charToWchar(char *s){ int w_nlen=MultiByteToWideChar(CP_ACP,0,s,-1,NULL,0); WCHAR *ret; ret=(WCHAR*) malloc(s
vs2010中處理char和CString
編寫個網路聊天的程式,sendto和recvfrom函式中使用char,使用sprintf格式化呢又提示警告,要用format函式,使用CString物件呢經過lParam引數傳遞後又不好轉換,接收端接收到的全是亂碼,
Java中char和String的轉換
Java中char是一個基本型別,而String是一個引用型別。有時候我們需要在它們之間互相轉換。 String轉換為char 在Java中將String轉換為char是非常簡單的。 1. 使
MFC程式設計 char*和CString兩種型別的互相轉換
問題 在程式設計時,因為用了c++作為邏輯層的編寫,其中的字串是以char*或者字元陣列的形式表現的,而不是以CString的物件表現的,尤其在從控制元件中讀取文字時,沒辦法使用等等,這裡,將介紹我使用的方法 char*到CString的轉換 char
java中char和int型別的相互轉換
char型別轉int型: char numChar = '9'; int nSum = numChar-'0'; int型別轉cahr型:int num = 9; char numChar = n
Java中 char和int之間的轉換
1、int 轉換成char: int n = 1; char ch = (char)(n + '0'); 這樣打印出來ch的值為1; 不過需要注
Java中float和double轉換的問題
leg throw exceptio int row 如何 方法 避免 stat 為什麽double轉float不會出現數據誤差,而float轉double卻誤差如此之大? double d = 3.14; float f = (float)d; Syst
mysql中char和varchar和text的區別(不看後悔,一看必懂)
①CHAR是一種固定長度的型別,適合用在身份證號碼、手機號碼等定。,VARCHAR則是一種可變長度的型別。適合用在長度可變的屬性。 text不設定長度, 當不知道屬性的最大長度時,適合用text。 ②按照查詢速度: char最快, varchar次之,text最慢。 也就是說,
MySQL中 char 和 varchar 的區別
一、VARCHAR與CHAR字元型資料的差異 在MySQL資料庫中,用的最多的字元型資料型別就是Varchar和Char,這兩種資料型別雖然都是用來存放字元型資料,但是無論從結構還是從資料的儲存方式來看,兩者相差很大。而且其具體的實現方式,還依賴與儲存引擎。我這裡就以大家最常用的MYISAM儲
mysql中char和varchar
引言 以前對char的理解是固定長度,varchar可變長度的,對於char不管實際長度是否等於固定長度都按固定長度計算,varchar是根據時間長度計算的,所以感覺varchar是挺方便節省空間的。但是在看書的時候發現以前的理解是有偏差的,在此mark一下。 MySQL中varchar最大
VC++中 PostMessage和SendMessage的區別
函式功能:該函式為一個訊息檢查執行緒訊息佇列,並將該訊息(如果存在)放於指定的結構。 函式原型:BOOL PeekMessage(LPMSG IpMsg,HWND hWnd,UINT wMSGfilterMin,UINT wMsgFilterMax,UINT wRemoveMsg); 引數: lpM
字串中漢字和數字轉換成拼音
var transliteration =require(‘transliteration’); ToPin('你好123'); 程式碼: function ToPin(str){ var array =[]; var newstr =""; for(var i
【轉】VC++中的影象型別轉換--使用開源CxImage類庫
一。CxImage類庫簡介 這只是翻譯了CxImage開源專案主頁上的部分簡介及簡單使用。 CxImage類庫是一個優秀的影象操作類庫。它可以快捷地存取、顯示、轉換各種影象。有的讀者可能說,有那麼多優秀的圖形庫,如OpenIL,FreeImage,PaintLib等等,它們可
如何在VS VC 中DLL使用CString類
CString類用起來非常方便,可是如果不對預設的工程進行一些手術,就沒法使用它 具體的修改方法如下,與大家分享一下。 在stdfax中加入下面的紅色部分 // stdafx。h #if !defined(AFX_STDAFX_H__A9DB83DB_A9F
C++中char *和char []的區別
以前一直覺得這兩個有區別,但也沒深究,今天寫了個程式碼報了警告於是就看了看,總結如下。 例如如下程式碼: #include<iostream> using namespace std; int main() { char *p1
VC中數字與字串轉換方法
字串轉數字 1.CRT函式 ASCII UNICODE TCHAR VS2005 int atoi _wtoi _tstoi _ttoi _atoi_l _wtoi_l long atol _wtol _tstoi _t
Spark學習筆記 --- Spark中Map和FlatMap轉換的區別
wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------