无法从“WCHAR”转换为“WCHAR [260]”
Posted
技术标签:
【中文标题】无法从“WCHAR”转换为“WCHAR [260]”【英文标题】:cannot convert from 'WCHAR' to 'WCHAR [260]' 【发布时间】:2009-05-21 11:28:17 【问题描述】:我正在尝试修改 amcap,这是 Windows SDK 示例中的一个应用程序,用于从分辨率为 1600x1200 像素的 UVC 网络摄像头捕获视频。
我正在尝试在这里硬编码一些变量,例如文件名、默认分辨率、格式类型等。
WCHAR wszCaptureFile[260];
gcap.wszCaptureFile = (WCHAR)"Capture.avi\0" //modified
gettnig 错误:
1>.\amcap.cpp(3887) : 错误 C2440: '=' : 无法从 'WCHAR' 转换为 'WCHAR [260]'
我能做些什么来纠正这个问题?
【问题讨论】:
【参考方案1】:您不能用 = 分配数组 wszCaptureFile(就像您所做的那样)。您可以使用strcpy 等复制方法。
wcscpy 和 _mbscpy 是宽字符 和多字节字符版本 strcpy
例如:
wcscpy(gcap.wszCaptureFile, L"Capture.avi");
【讨论】:
【参考方案2】:提供文字宽字符串并使用安全复制功能:
wcscpy_s(gcap.wszCaptureFile, L"Capture.avi");
文字字符串提供终止零字节。
【讨论】:
【参考方案3】:根据 cmets 对答案进行了更新...并考虑 wstrcpy_s。
wstrcpy ( wszCaptureFile, L"Capture.avi" );
【讨论】:
... 而 wstrcpy_s(...) 是安全的实现。 他还需要使用L前缀:wstrcpy(wszCaptureFile, L"Capture.avi"); Daniel 是正确的,安全版本更好,但考虑到他对 C 的经验,稍微复杂一点,现在简单版本更好。 安全版本不再复杂——目标为数组时无需提供大小参数【参考方案4】:您将字符串转换为 WCHAR 元素,而不是您希望的 WCHAR 数组。 试试:
wszCaptureFile = L"Capture.avi\0";
【讨论】:
以上是关于无法从“WCHAR”转换为“WCHAR [260]”的主要内容,如果未能解决你的问题,请参考以下文章
VS错误C++:不存在从 "WCHAR [260]" 转换到 "std::basic_string<char," 的适当构造函数
strcmp 错误“WCHAR [260]”到“const char *”[重复]
nasal脚本起源与环境搭建(flightgear开源项目)
error C2440: “=”: 无法从“const wchar_t [4]”转换为“LPWSTR”