2013-07-03 22 views
0

數組在我的代碼我有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"}; 

後來我用數組中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] 

奇怪的是,類似的代碼用於幾個月前正確編譯...有什麼問題嗎?

+2

一個'wchar_t'僅僅是一個寬字符,而不是字符串。您試圖用(寬)字符串值初始化一個字符數組。 –

回答

5

你需要

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

我必須無意中刪除了'*'...謝謝 – burtek

3

您需要使用:

wchar_t *paths[6] = ... 
     ^

一個wchar_t(寬)字符,而不是他們的字符串。

所以,如果你想要一個寬字符串的數組,你應該使用指針變體。

說明者wchar_t xyzzy[6]給你六個個字符而不是六個字符數組。