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 ...