不能将参数 1 从“CString”转换为“const char *”

不知道这个应该怎么转换,求各位老哥帮帮忙图片说明

格式乱了,重写一下 以下例子是将CString转成char*,再拷贝。

CString aaa;
aaa = "hello";
char buffer[32] = {0};
strcpy(buffer, aaa.GetBuffer());

strlen( )函数的参数是一个字符数组的指针,你的MsgStr是不是一个String类型的? 若果string,你可以用 MsgStr.length();

CString是一个类,用CString的GetBuffer成员函数转换成char*。

除了改成多字节字符集以外其他的办法

转换的话 strlen((const char*)MsgStr.GetBuffer(0));
但是CString是宽字节,这样求出来的长度应该会有问题。
因为宽字节英文字母在内存中占用情况是 ‘M’‘\0’这样占有两个字节,转换为const char* 求长度时到第一个'\0'就结束了。

所以简单点方法,CString求长度可以使用CSting.GetLength().

strlen针对的是char数组或者char指针,cstring是vs自己封装的一个类,同时封装了自己的函数,好比format一个等级
MsgStr.GetLength();的返回值就是你要算的字符串长度