斷斷續續學習c++有一段時間了,在學習和編寫自己的小工具過程中也遇到了很多問題,今天終於可以寫一篇自己的原創文章了,也不算是原創,是對自己前面程式設計過程中的小問題的彙總吧,現在整理下來供自己以後翻閱還有像我一樣的菜鳥們參考。
進入正題,首先要用格式轉換會用到一些常用的巨集,一般來說,需要在程式中新增這個標頭檔案引用#include
,用到這個標頭檔案主要是為了使用以下幾個巨集:
uses_conversion
a2ww2a
t2cw
t2ca
也就是編碼轉換的幾個巨集,它的內部封裝了multibytetowidechar和widechartomultibyte函式。
下面是我做小工具以來遇到的一些資料型別轉換:
1. cstring轉char
uses_conversion;
char*path = t2a(inpath.getbuffer(0));
inpath.releasebuffer();
2. cstring轉到string
uses_conversion;
stringoutpath = w2ca((lpcwstr)filepath);
(注意:uses_conversion這一句在乙個類檔案中只出現一次就可以,第二次用到格式轉換功能時不需要重複寫。並且注意它是在堆疊上分配空間的,也就是說你在你在函式未結束就不會被釋放掉。所有要注意不要在乙個函式中用while迴圈執行它,不然棧空間就馬上會分配完(棧空間一般只有2m,很小)。)
3. string轉char*
constchar* a = ((*it)->dd).c_str();
(這個問題是我在用vector進行資料輸出的時候遇到的,我在vector中定義的string型別的資料無法通過ofstream輸出到txt文字中,後來我二姨夫幫我改**進行了這樣乙個轉換就可以輸出了,這個地方後續繼續研究一下造成原因。)
4. double轉string
doubledx= (*it)->xx;
char b[20];
sprintf(b,"%.8lf",dx);
(這個也是在vector輸出時遇到的問題,直接通過ofstream輸出資料到文字檔案中資料自動儲存成了科學計數法的形式,沒辦法只好在輸出之前做乙個格式轉換。)
5. cstring轉double
cstring x1 = sx.left(pos);
double xx = (float)atof((char*)(lptstr)(lpctstr)x1);
哈,目前就找到用過的這麼幾個,後續陸續補充吧。
資料型別轉換 總結
語法 cast expression as data type length convert data type length expression style 引數 expression 任何有效的表示式。data type 作為目標的系統提供資料型別。length 目標資料型別的長度 目標資料型...
資料型別轉換的總結
關於一些資料型別的轉換總結 1.bitconverter類 如 byte arry bitconverter.getbytes int a 2.encoding類 如 byte bytearray system.text.encoding.default.getbytes str 3.int.par...
C 資料型別轉換總結
string str cstring cstr str.c str string str char ch ch str.c str string str double dou dou atof str.c str string str int i i std atoi str.c str cstri...