格式乱了,重写一下 以下例子是将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();的返回值就是你要算的字符串长度