CString 转 char*的有关问题
CString 转 char*的问题C/C++ codeCString fenGeFuGetDlgItem(IDC_EDIT1)- GetWindowText(fenGeFu)CStr
CString 转 char*的问题
C/C++ code CString fenGeFu; GetDlgItem(IDC_EDIT1)-> GetWindowText(fenGeFu); CString inFile; GetDlgItem(IDC_MFCEDITBROWSE1)-> GetWindowText(inFile); int zifuNum=fenGeFu.GetLength()+1; char *pBuf = (char*)malloc(zifuNum); memset(pBuf,0, zifuNum); memcpy(pBuf, (LPCTSTR)fenGeFu,zifuNum);//这里得到的永远是第一个字节?不懂为什么?
[解决办法]C/C++ codememcpy(pBuf, fenGeFu.GetBuffer(),zifuNum);fenGeFu.ReleaseBuffer();
[解决办法]
[解决办法]
[解决办法]
GetBuffer 就直接返回Char * 直接用就行 不用再分配内存了
用完ReleaseBuffer就行了
[解决办法]
pBuf指向一个划定的内存区域的第一个位置, memcpy()只是将fenGeFu.getbuffer()这样一个内存区域的内容复制到pBuf指向的那个内存区域,而pBuf仅仅是指向该区域的第一个位置,所以打印出来只会是该内存区域的第一个位置的值。
不知道解释清楚了木有
[解决办法]
CString根据设置对应CStringA(窄char)或者CStringW(宽wchar_t)。windows里,宽字符两字节,utf-16编码,'a'对应编码就是0x0061,小端系统里,内存摆放就是 0x61 0x00,memcpy是把zifuNum字节都复制了,但估计输出你用的是printf("%s",pBuf)之类的。这样0x61之后的0x00就成了字符串结束符,结果你发现输出就第一个字符。