无法创建wchar_t数组

bur*_*tek 0 c++ arrays compiler-errors wchar-t

在我的代码中,我有一个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"};
Run Code Online (Sandbox Code Playgroud)

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

error: too many initializers for 'wchar_t [6]'
error: initializer-string for array of chars is too long [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

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

if(GetFileAttributesW(paths[i])!=INVALID_FILE_ATTRIBUTES) {...}
Run Code Online (Sandbox Code Playgroud)

而且,我在这里得到一个错误:

error: invalid conversion from 'wchar_t' to 'LPCWSTR {aka const wchar_t*}' [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

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

joh*_*902 6

你需要

const wchar_t* paths[6] = ....
Run Code Online (Sandbox Code Playgroud)


pax*_*blo 5

您需要使用:

wchar_t *paths[6] = ...
        ^
Run Code Online (Sandbox Code Playgroud)

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

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

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