CString可以通过GetBuffer()函数获得其内部的字符数组地址。

CString s = TEXT("abcd"); //创建一个CString字符串TCHAR array[100]; //创建一个数组LPTSTR pBuffer = s.GetBuffer(); //获取字符串内部的字符数组的地址memcpy(array, pBuffer, s.GetLength() * sizeof(TCHAR)); //向数组复制数据
1.传给未分配内存的const char* (LPCTSTR)指针. CString cstr(asdd); const char* ch = (LPCTSTR)cstr; ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.
2.传给未分配内存的指针. CString cstr = "ASDDSD"; char *ch = cstr.GetBuffer(cstr1.GetLength() + 1); cstr.ReleaseBuffer(); //修改ch指向的值等于修改cstr里面的值. //PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.
3.第二种用法。把CString 值赋给已分配内存的char *。 CString cstr1 = "ASDDSD"; int strLength = cstr1.GetLength() + 1; char *pValue = new char[strLength]; strncpy(pValue, cstr1, strLength);
4.第三种用法.把CString 值赋给已分配内存char[]数组. CString cstr2 = "ASDDSD"; int strLength1 = cstr1.GetLength() + 1; char chArray[100]; mEMSet(chArray,0, sizeof(bool) * 100); //将数组的垃圾内容清空.
C语言中赋值语句的规则如下:
1. 赋值语句的格式为:变量名 = 表达式;
其中,变量名表示要被赋值的变量名称,表达式则是右侧的值或运算结果。
2. 赋值号“=”表示将右侧表达式的值赋给左侧的变量,
在赋值完成之后,左侧的变量存储了右侧表达式的值。
3. 表达式可以是常量、变量或者多个常量和变量的组合,
还可以使用基本的算术、关系和逻辑运算符对表达式进行处理。
4. 赋值语句必须在语句末尾添加分号“;”,分号表示一个语句结束。
5. 赋值语句的执行顺序是从右到左,
先计算右侧表达式的值,再将其赋给左侧变量。
6. 如果变量在没有初始化的情况下被赋值,
则它的初始值将被覆盖为右侧表达式的值。
7. C语言支持复合赋值运算符,包括“+=”、“-=”、“*=”、“/=”等,
它们可以将右侧表达式的值与左侧变量的值进行运算,最终将结果赋给该变量。