【问题标题】:Unable to create an array of wchar_t无法创建 wchar_t 数组
【发布时间】:2023-03-12 12:14:01
【问题描述】:

在我的代码中,我有一个 wchar_t 数组:

wchar_t paths [6] = {L"C:\\Program Files\\SomeAppsSuiteFolder1", L"C:\\Program Files\\SomeAppsSuiteFolder2", L"C:\\Program Files (x86)\\SomeAppsSuiteFolder1", L"C:\\Program Files (x86)\\SomeAppsSuiteFolder2", L"C:\\SomeAppsSuiteFolder1", L"C:\\SomeAppsSuiteFolder2"};

稍后我在for 循环中使用数组。问题是,对于这一行,我得到以下错误:

error: too many initializers for 'wchar_t [6]'
error: initializer-string for array of chars is too long [-fpermissive]

更重要的是,在for 循环中,我有if 这样的条件:

if(GetFileAttributesW(paths[i])!=INVALID_FILE_ATTRIBUTES) {...}

再一次,我在这里得到一个错误:

error: invalid conversion from 'wchar_t' to 'LPCWSTR {aka const wchar_t*}' [-fpermissive]

很奇怪,几个月前用于正确编译的类似代码......有什么问题?

【问题讨论】:

  • A wchar_t 只是一个宽字符,而不是字符串。您正在尝试使用(宽)字符串值初始化一个字符数组。

标签: c++ arrays compiler-errors wchar-t


【解决方案1】:

你需要

const wchar_t* paths[6] = ....

【讨论】:

    【解决方案2】:

    你需要使用:

    wchar_t *paths[6] = ...
            ^
    

    wchar_t 是一个单个(宽)字符,而不是它们的字符串。

    所以,如果你想要一个宽字符串的数组,你应该使用指针变体。

    声明符wchar_t xyzzy[6] 为您提供六个字符,而不是六个字符数组。

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 2015-11-14
      • 1970-01-01
      • 2011-07-14
      • 2014-07-28
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      相关资源
      最近更新 更多