CString转byte* 并计算长度
时间: 2024-11-05 14:34:36 浏览: 4
在MFC(Microsoft Foundation Classes)库中,CString是一个宽字符字符串类,而byte*通常是用于表示普通8位字节的指针。如果你需要将一个宽字符字符串(CString)转换成字节数组(byte*),并同时计算它的长度,可以按照以下步骤操作:
1. 首先,你需要创建一个足够大的byte数组来存放转换后的字符串。假设原始字符串是`TCHAR`类型的,例如`_T("Hello")`,你可以这样做:
```cpp
TCHAR szOriginalString[] = _T("Hello");
int nOriginalLength = lstrlen(szOriginalString); // 使用lstrlen()计算宽字符字符串长度
std::vector<byte> buffer(nOriginalLength * sizeof(TCHAR)); // 创建一个byte*指向的字节数组
```
2. 接着,使用`AtoT()`或`AtlConvertToAnsi()`函数将宽字符转换为ANSI字符,然后复制到byte数组:
```cpp
AtoiArray((LPCSTR)szOriginalString, (LPSTR)&buffer[0], buffer.size());
```
或者
```cpp
AtlConvertToAnsi(szOriginalString, &buffer[0], buffer.size(), CP_ACP);
```
这里我们假设目标编码是ASCII,如果不是,需要调整`CP_XXX`参数为正确的代码页。
3. 转换完成后,`buffer`数组的前`nOriginalLength`个字节将是转换后的文本。最后,`buffer.size()`就给出了原始宽字符字符串的字节长度。
阅读全文