我试着使用这段代码:
USES_CONVERSION;
LPWSTR temp = A2W(selectedFileName);
Run Code Online (Sandbox Code Playgroud)
但是当我检查temp变量时,只需获取第一个字符
提前致谢
如果我没有记错,CString是typedef定义要么CStringA或者CStringW,这取决于你正在构建Unicode或没有.
LPWSTR是"广泛指向的长指针" - 又名: wchar_t*
如果要将CString传递给采用LPWSTR的函数,可以执行以下操作:
some_function(LPWSTR str);
// if building in unicode:
some_function(selectedFileName);
// if building in ansi:
some_function(CA2W(selectedFileName));
// The better way, especially if you're building in both string types:
some_function(CT2W(selectedFileName));
Run Code Online (Sandbox Code Playgroud)
然而, LPWSTR是对字符串的非const访问.您是否正在使用尝试修改字符串的函数?如果是这样,您希望使用实际缓冲区,而不是CString.
此外,当你"检查" temp- 你的意思是什么?你试过cout << temp吗?因为那不起作用(它只显示第一个字符):
char每个字符使用一个字节. wchar_t每个字符使用两个字节.对于普通英语,当您将其转换为宽字符串时,它使用与原始字符串相同的字节,但每个字符都填充为零.由于NULL终止符也是零,如果您使用较差的调试器或cout(使用ANSI文本),您将只看到第一个字符.
如果要将宽字符串打印到标准输出,请使用wcout.
| 归档时间: |
|
| 查看次数: |
13883 次 |
| 最近记录: |