Unable to create an array of wchar_t

◇◆丶佛笑我妖孽 提交于 2020-07-07 11:50:14

问题


In my code I have an array of 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"};

Later on I use the array in for loop. The problem is, that for this line I get following errors:

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

What's more, in for loop I have if conditional like this one:

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

And, again, I get an error here:

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

Strange enough, similar code used to compile correctly some months ago... What's the problem?


回答1:


You need

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



回答2:


You need to use:

wchar_t *paths[6] = ...
        ^

A wchar_t is a single (wide) character, not a string of them.

So, if you want an array of wide strings, you should use the pointer variant.

The declarator wchar_t xyzzy[6] gives you six characters rather than six character arrays.



来源:https://stackoverflow.com/questions/17442502/unable-to-create-an-array-of-wchar-t

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!