1.强制类型转换
CString theString( "This is a test" ); LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;
CString theString( "This is a test" ); LPTSTR lpsz = new TCHAR[theString.GetLength()+1]; _tcscpy(lpsz, theString);
CString s(_T("This is a test ")); LPTSTR p = s.GetBuffer(); // 在这里添加使用p的代码 if(p != NULL) *p = _T('\0'); s.ReleaseBuffer();
1.使用wcstombs()
CString str("string"); char pChar[100]; wcstombs(pChar,str,100);
2.使用wcstombs_s()
TCHAR szTchar[18] = L"TCHAR"; CString str; str.Format(_T("%s"),szTchar);
CString str("cstring"); LPCTSTR pcStr = str;
1.使用wcscpy()
CString str("string"); WCHAR pWchar[100]; wcscpy(pWchar,str);2.使用wcspy_s,上一个函数的安全版本
CString str("string"); WCHAR pWchar[100]; wcscpy(pWchar,100,str);3.使用_tcspy()
CString str("string"); WCHAR pStr[100]; _tcscpy(pStr,str);
CString str("string"); WCHAR pStr[100]; _tcscpy_s(pStr,100,str);
wcscpy处理Unicode
_tcspy()是一个宏
wcstombs()为了实现多字节和单字节转换而设计的
<span style="font-size:12px;">CString str = _T("123"); int i = _ttoi(str);</span>
int i = 123; CString str ; str.Format(_T("%d"), i);
DWORD双字无符号
int长度与机器相关
int i=10; DWORD d=DWORD(i);
如:strcpy_s,它与strcpy基本一致,但会自动进行越界检查(以\0判断结束)。
const char *s="hello"; //*s要是正确的字符串 std::string str(s);
char* data = ...; int size = ...; std::string myString(data,size); //已知长度,不要使用strlen
std::string my_string("testing!"); const char* data = my_string.c_str(); //不能再改变my_string
std::string my_string("testing!"); char *cstr = new char[my_string.length() + 1]; strcpy(cstr,my_string.c_str()); //do stuff delete[] cstr;
//取combobox的值 CString CSerialTestDlg::GetComboboxValue(CComboBox* cob){ CString result(_T("")); int curSel; curSel=cob->GetCurSel(); if(curSel>-1){ cob->GetLBText(curSel,result); return result; } return _T(""); }void* 可强制转换为任何其它类型的指针。