char * p = “123”; 怎样在p前加上上述L前缀
时间: 2024-10-13 14:10:22 浏览: 22
浅析char 指针变量char *=p 这个语句的输出问题
5星 · 资源好评率100%
在C++中,如果你想将一个普通的`char*`指针`p`指向一个宽字符(即UTF-16)字符串,你需要先将其转换为宽字符`wchar_t*`。`L`前缀用于标识宽字符字符串,它通常出现在字符串字面量的开始位置,而不是指针前。如果你有一个`char*`,你可以按照以下步骤进行转换:
```cpp
char * p = "123";
wchar_t * wp = L""; // 创建一个空的宽字符字符串
if (sizeof(wchar_t) == sizeof(char)) { // 如果wchar_t是char大小,则直接转换
wcscpy_s(wp, L"123", p); // 将普通字符串复制到宽字符字符串
} else {
size_t len = MultiByteToWideChar(CP_UTF8, 0, p, -1, NULL, 0); // 获取UTF-8编码的字符串长度
wchar_t buf[len + 1]; // 预留一个额外的位置放终止符'\0'
MultiByteToWideChar(CP_UTF8, 0, p, -1, buf, len); // 转换并保存到buf
wcscpy_s(wp, L"123", buf); // 再次复制到宽字符字符串
}
// 现在wp就是宽字符字符串的指针了
```
请注意,这仅适用于使用UTF-8编码的情况。如果原始字符串使用了其他编码,转换过程会有所不同。
阅读全文