我尝试使用此代码:
USES_CONVERSION;
LPWSTR temp = A2W(selectedFileName);
但是当我检查 temp
变量时,只需获取第一个字符
提前致谢
原文由 Luis Gabriel Fabres 发布,翻译遵循 CC BY-SA 4.0 许可协议
我尝试使用此代码:
USES_CONVERSION;
LPWSTR temp = A2W(selectedFileName);
但是当我检查 temp
变量时,只需获取第一个字符
提前致谢
原文由 Luis Gabriel Fabres 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
如果我没记错的话,
CString
的类型定义为CStringA
或CStringW
,具体取决于您是否正在构建 Unicode。LPWSTR
是“指向宽字符串的长指针”——又名:wchar_t*
如果您想将 --- 传递给采用
LPWSTR
CString
的函数,您可以执行以下操作:但是 ---
LPWSTR
是对字符串的非常量访问。您是否正在使用尝试修改字符串的函数?如果是这样,您想使用实际缓冲区,而不是CString
。另外,当您“检查”时
temp
您是什么意思?你试过cout << temp
吗?因为那行不通(它只会显示第一个字符):char
每个字符使用一个字节。wchar_t
每个字符使用两个字节。对于纯英语,当您将其转换为宽字符串时,它使用与原始字符串相同的字节,但每个字符都用零填充。由于NULL
终止符也是零,如果您使用较差的调试器或 cout(使用 ANSI 文本),您将只能看到第一个字符。如果要将宽字符串打印到标准输出,请使用
wcout
。