(小節)字串間轉換

2021-05-21 21:17:52 字數 2083 閱讀 7918

vs裡預設用unicode

**將string轉為cstring

cstring string2cstring(const std::string& _str)

**將cstring轉為string

std::string cstring2string(cstring& _str)

//功能:將char* 轉換為cstring

//引數:待轉換的char*

//返回值:轉換後的cstring

cstring chartocstring(char* result)

multibytetowidechar (cp_acp, 0, result, -1, pwtext, dwnum);// 開始轉換

cstring cstr=pwtext;

return cstr;

}multibytetowidechar() **頁 cp_acp/cp_oemcp比較

std:string、char *和char 的問題

再轉一篇

cstring 轉換為 char* (vc6.0與visual studio 2005相容問題)unicode字符集

使用cstring的getbuffer方法

cstring origcstring("hello,world");

char* charstring = origcstring.getbuffer(origcstring.getlength()+1);

網上的很多文章說的都是這個方法,但是我在vc++2005中編譯得到下列資訊

error 1 error c2440:   'initializing' : cannot convert from 'wchar_t *' to 'char *'  

輸出正確,均為hello, world!

結合上面的兩段,看看能不能將cstring轉換為char*

cstring origcstring("hello, world!");

wchar_t* wcharstring = origcstring.getbuffer(origcstring.getlength()+1);

size_t origsize = wcslen(wcharstring) + 1;

size_t convertedchars = 0;

char *charstring;

charstring=new char(origsize);

wcstombs_s(&convertedchars, charstring, origsize, wcharstring , _truncate);

cout << charstring << endl;

成功輸出字串"hello,world"

至於為什麼原來的那段**別人都能用好,而我在vc++2005下面去不能直接使用,還要通過轉換呢?正好看到《programming windows》的第二章講unicode的和在msdn論壇問了一下相關問題後得到答案。

原來在vc++ 2005以前,應用程式預設都是關閉對unicode的支援的,而在vc2005中,預設開啟了對它的支援,cstring對應的字串應該是tchar,tchar的定義是這樣的,

#ifdef _unicode

typedef wchar_t tchar    ;

#else

typedef char tchar;

#endif

我想這個就是為什麼我在vc++2005種不能直接轉換的原因。在工程中應該可以關閉對於unicode的支援,從而可以直接轉換。這個做法是右擊工程名—〉property—〉general中的character set中選擇not set,這樣,本文開頭的那段**就可以正確的執行了。

(不過介面效果就達不到之前的效果了。。。)

HWND 與字串間轉換

hwnd 轉換成字串 tchar szbuffer 256 wsprintf szbuffer,l window handle 0x 08p hwnd 在c語言中格式化字串可以使用printf,但是在windows程式設計設計中卻行不通了,但是卻有變通的方法,那就是用 wsprintf這個函式 它的...

整數,字元,字串間的轉換

include include include include using namespace std int main int i int num1 123456 int num2 1 string str 123456 char c num 1 單個數字轉字元 char temp1 temp1 ...

C 字串和數值間轉換

主要是用到字元流istringstream ostringstream的特性 string to double.the same way works for string to int.double string to double string s stoi方法 類似有stod方法 string ...