Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
警告:多字符字符常量[-Wmultichar]_C_Wchar T - Fatal编程技术网

警告:多字符字符常量[-Wmultichar]

警告:多字符字符常量[-Wmultichar],c,wchar-t,C,Wchar T,我想要一个希腊字母数组,我就是这么做的: wchar_t pcletters[30] = {'α' , 'ά' , 'β' , 'γ' , 'δ' , 'ε' , 'ζ' , 'η', 'θ' , 'ι' , 'κ' , 'λ' , 'μ' , 'ν','ξ' , 'ο' , 'π' , 'ρ' , 'σ' , 'τ' , 'υ' , 'φ' , 'χ' , 'ψ' , 'ω', 'έ' , 'ή' , 'ί' , 'ό' , 'ύ' , 'ώ'} ; 我还包括,并有一行setlocale(L

我想要一个希腊字母数组,我就是这么做的:

wchar_t pcletters[30] = {'α' , 'ά' , 'β' , 'γ' , 'δ' , 'ε' , 'ζ' , 'η', 'θ' , 'ι' , 'κ' , 'λ' , 'μ' , 'ν','ξ' , 'ο' , 'π' , 'ρ' , 'σ' , 'τ' , 'υ' , 'φ' , 'χ' , 'ψ' , 'ω', 'έ' , 'ή' , 'ί' , 'ό' , 'ύ' , 'ώ'} ;
我还包括
,并有一行
setlocale(LC\u CTYPE,“”)。

但是我得到了警告:多字符字符常量[-Wmultichar]。 此外,当我通过执行以下操作来检查此字母中是否有一个在用户输入中:

if (userword[i] == pcletters[j]) {//do stuff} 
它似乎不起作用。 -为什么我会收到这个警告? -有没有一种方法可以通过比较的方式更改字母
userword[i]==pclets[j]


注意:
userword
的定义如下:
wchar\u t userword[40]

使用宽字符文本:

wchar_t pcletters[30] = {L'α' , ...
                         ^

请注意,这只适用于您正在编写的字母为单个宽字符的平台;这应该适用于Windows,其中
wchar_t
是UCS-2。

我认为您需要
wchar_t pcletters[30]={L'α',L'ά',L'β',L'γ',…
我认为希腊字母表是一个多字节字符字母表,意味着一个
char
不足以容纳一个字母。西班牙语的反问号也是如此(这可能导致addslashes的安全性失败)。ℑ @嗨,天使,是的,这是专门针对适合在目标平台上的一个WHARGART的字符。@ EUMTMUR甚至在UTF16中是不适合两个字节的东西。我倾向于认为 WCARGYTT 用法是个坏主意。AFAIK C++标准不提供工具来处理Unicode,所以工作必须用LIBE来完成。至于最低限度的支持-我认为多字节字符应该存储为字符串。@嗨,Angel,处理一般文本的任何人迟早都必须处理扩展平面字符,甚至多代码点字符-感谢Unicode提供表情符号。但我不确定这与此问题有何关系。@ecatmur这与b有关因为每个从搜索引擎来到这里的人都会认为
wchar\u t
是灵丹妙药,而事实并非如此。这个问题已经有3k的浏览量了。所以我认为应该有人在这里留下警告☺