CString與char[] 的相互轉換方法以及結尾亂碼問題的分析解決
這是一個很常見的問題,下面記錄下我的解決方案。
一、CString 轉化成char[]
方法一:運用 CString.GetBuffer(0) 與 strcpy
二、char[]轉化成CString
首先我們就會想到下面的寫法
或
可是執行結果都是:
在CString的最後多出了亂碼,而測試得到的CString物件的長度為7,這是為什麼呢?我想是這樣的:
CString 物件將ch 當做字串來處理的,所以在把一個char[]轉化成CString物件時,會分兩個過程:
1. 首先會把char[]轉化成char*,這個轉化就會在字串的結尾產生亂碼,測試如下:
除錯執行得到:
2. 把char*字串儲存在CString物件的CStringData 物件中,這是儲存的已經是存在亂碼的資料了,所以在輸出時
就出現了我們看到的亂碼。
到這裡或許大家都知道了亂碼的原因了吧。
下面就著手解決,這個自然就不是問題了,只要將陣列的最後一位賦值為'/0'即可。
結果如下:
至此問題解決
相關推薦
CString與char[] 的相互轉換方法以及結尾亂碼問題的分析解決
這是一個很常見的問題,下面記錄下我的解決方案。 一、CString 轉化成char[] 方法一:運用 CString.GetBuffer(0) 與 strcpy CString str; int len = str.GetLength(); char* arr = n
CString與Char*的轉換,以及中文字元寫入檔案,檔案的讀寫等
工作需要,碰到多個檔案讀取和型別轉換的問題,記錄下來。 ps:都是網上搜集來的,只是查的太多,找不到具體連結了,只好不列出處。再次感謝! 1、CString與char*的轉換 分兩種情況,一種是工程設定的是不使用Unicode編碼,這樣的比較簡單,用(LPSTR)(LPCT
VS2010 CString與char互相轉換的方法
先看如何將CString轉char*: 包涵標頭檔案 #include<iostream> #include<stdio.h> #include<afx.
【資料型別】string與char[]的轉換方法
在 【資料結構】棧與佇列Part2:棧的應用之表示式轉換 中,儲存表示式的資料型別是string型別,而atof()函式是將char[]型別轉化為浮點數的函式。 因此,將string轉化為char[]的方法是非常重要的。 查閱資料:c++ string轉char* 我主要
MFC中CString 與char*相互轉化
CString->char* CString str = _T("1234"); USES_CONVERSION; char* p = T2A(str.GetBuffer(0)); str.ReleaseBuffer(); char*->CString ch
C++中string與char相互轉換
一、string轉char* 1.data()方法 string str = "hello"; const char* p = str.data(); //或char * p=(char*)str.data(); 2.c_str()方法 stri
int與char相互轉換
一、int->char 在stdlib.h中有個函式itoa(),可以實現這個功能 itoa(i,num,10); i 需要轉換成字元的數字 num 轉換後儲存字元的變數 10 轉換數字的基數(進位制)10就是說按照10進位制轉換數字。還可以是2
c++中int與char相互轉換
一、ASCII表 瞭解int與char相互轉換之前,先讓我們看一下ASCII碼錶。 其中數字字元對應的位置為:48 - 57。 二、char轉int char轉int之前,先將運算式中的每個字元都轉換成ASCII碼值,再進行計算。 以下程式碼為例,其中i3的結
16進位制CString與int相互轉換
以下為VC2008下實現程式碼: 一、int型轉16進位制CString CString IntToCStringHex(int algorism)//十六進位制轉換 { vector<int> reNum; CString str; //倒序輸出 do
Cstring 與 char*的轉換,TCHAR 與 char 轉換
使用unicode的會存在寬位元組和單位元組之間的轉換: CString轉char * 1、使用WideCharToMultiByte函式,其中mWcount為CString型別。 char* _wParam = (char*) malloc( siz
CString與char的相互轉換
CString CharToCString(char *pText) {int iLength = 0; wchar_t *pwText = NULL;CString csText = _T("");/* Get the number of wide charac
MFC中 CString與Char[] 的相互轉換
為了簡化操作,我寫成了兩個函式: //CString轉Char[] 返回陣列首元素地址 char * CSocket_ClientDlg::CStringToCharArray(CString str
js數組與字符串的相互轉換方法
spl new 轉換 abc bcd 數組 www htm aaa 1.數組轉字符串 var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 2.字符串轉數組 var s = "abc,abcd,aaa"; ss =
【UML】Java代碼與UML模型相互轉換方法
pap ref through 沒有 src 設計模式 ron 建模工具 好用 最近重溫了幾個設計模式,看到大家的博客裏面都是Java代碼+UML視圖,UML表達整體框架,然後再秀出具體的代碼,點面結合、一目了然。所以也研究了一下Java代碼與UML模型相互轉換方法。
Unicode下的CString與char *轉換
轉載:http://blog.sina.com.cn/s/blog_63106cd80100yq8n.html 在VS2005及以上的環境中,所見工程的預設字符集形式是Unicode,而VC6.0中,字符集形式為多位元組字符集(MBCS: Multi-Byte Character Set),
char string CString 之間的相互轉換
以上是多位元組版本。 =========================================================================================== 以下是寬位元組也就是UNICODE版本 ===============
【MFC】Unicode環境下CString與char*轉換
CString轉const char* const char* CStr2C(CString cstring) { return CW2A(cstring.GetString()); } char*轉CString CString C2CStr(char* cstr) { ret
NSArray 與 NSData的相互轉換 二進位制 以及陣列的相關操作
1.將NSArray轉化為NSData型別 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:Array]; &nb
Unicode字符集下CString與char *轉換
在Visual C++.NET2005中,預設的字符集形式是Unicode,但在VC6.0等工程中,預設的字符集形式是多位元組字符集(MBCS:Multi-Byte Character Set),這樣導致在VC6.0中非常簡單實用的各類字元操作和函式在VS2005環境下執行
java中陣列與List相互轉換的方法
1.List轉換成為陣列。(這裡的List是實體是ArrayList) 呼叫ArrayList的toArray方法。 toArray public <T> T[] toArray(T[] a)返回一個按照正確的順序包含此列表中所有元素的陣列;返回陣列