【问题标题】:cannot convert from 'WCHAR' to 'WCHAR [260]'无法从“WCHAR”转换为“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]'

我能做些什么来纠正这个问题?

【问题讨论】:

    标签: .net c++ visual-c++


    【解决方案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";
        

        【讨论】:

          猜你喜欢
          • 2012-04-29
          • 2011-05-04
          • 1970-01-01
          • 2012-04-03
          • 2018-06-02
          • 2012-01-28
          • 1970-01-01
          • 1970-01-01
          • 2020-09-08
          相关资源
          最近更新 更多