CString和其他字符串互转
字符集:使用Unicode字符集(UTF-16)
CString转string
USES_CONVERSION; CString str1; std::string str2(W2A(str1));
CString转System::String ^
CString str = _T("xxxx"); System::String ^s = gcnew System::String(str);
System::String ^ 转CString
System::String ^s = "xxxx"; CString str(s);
CString转char*
CString str1 = _T("111"); CString str2 = _T("222"); USES_CONVERSION; char *c1 = T2A(str1); char *c2; c2 = T2A(str2);
或使用CStringA
CString strTemp = _T("test");
CStringA strATemp(strTemp);
char value[100] = { 0 };
sprintf_s(value, "%s", strATemp);
char*转CString
char c11[200] = "111"; char *c22 = "222"; CString str11, str22; USES_CONVERSION; str11 = A2T(c11); str22 = A2T(c22);
CString转int
CString str = _T("1"); int i = _wtoi(str);
std::string 转 CString
1 2 | std:: string test_str = “hello”; CString cstr = test_str.c_str(); // 返回值为 char* 实质就是string字符串 |
字符集:使用多字节字符集
CString转string
CString str1; std::string str2(str1.Getbuffer()); str1.ReleaseBuffer();
CString转char *
sprintf(chBuff, str.GetBuffer());
char *转CString
CString str(chBuff);
或
CString str;
str.Format("%s", chBuff);
CString转WPARAM
CString str; (WPARAM)str.GetBuffer(); str.ReleaseBuffer();
WPARAM转CString
CString str; str.Format("%s", wParam);
CString转int
CString str = "1"; int i = atoi(str);
int i = _tcstoul(strHex, 0, 16);//16进制字符串转int
取一个int的高4位和低4位
int a = 165; int high = a >> 4;//10 int low = a & 0x0F;//5
ANSI转UTF8
void ConvertANSIToUTF8(CString &strANSI) { int nLen = ::MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, (LPCTSTR)strANSI, -1, NULL, 0); unsigned short * wszUTF_8 = new unsigned short[nLen + 1]; memset(wszUTF_8, 0, nLen * 2 + 2); nLen = MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strANSI, -1, (LPWSTR)wszUTF_8, nLen); nLen = WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)wszUTF_8, -1, NULL, 0, NULL, NULL); char *szUTF8 = new char[nLen + 1]; memset(szUTF8, 0, nLen + 1); WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)wszUTF_8, -1, szUTF8, nLen, NULL, NULL); strANSI = szUTF8; delete wszUTF_8; delete szUTF8; }
char**
int index = 4; char **pErr = (char**)malloc(sizeof(char*)*index);//申请有n个字符串的内存 for (int i = 0; i < index; i++) { pErr[i] = (char *)malloc(sizeof(char) * 128);//申请字符串的大小 memset(pErr[i], 0, sizeof(pErr[i])); } for (int i = 0; i < index; i++) { free(pErr[i]);//释放每个字符串的内存 } free(pErr);//释放指向指针的a指针的内存
科学计数法字符串转float
CString str1; str1 = "0.574E+00"; float fTemp = strtod(str1, NULL); CString str2; str2.Format("%.2f", fTemp); AfxMessageBox(str2);//0.57
字符串小数转float
fTemp = _tstof(strTemp);
_tstof在ASCII编码下被编译为atof,在UNICODE编码下被编译为_wtof
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具