Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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
C++ 为什么这被认为是常数?_C++_Utf 8 - Fatal编程技术网

C++ 为什么这被认为是常数?

C++ 为什么这被认为是常数?,c++,utf-8,C++,Utf 8,我有一堆UTF8字符: stack<wchar_t> tokenStack; 但是编译器不喜欢它: $g++PropositionalLogic.cpp-o PropositionalLogic PropositionalLogic.cpp:27:39:错误:引用类型“const value\u type” (也称为'const wchar__t')无法绑定到'const wchar__t[2]类型的左值 void doleftpren(){tokenStack.push(L“(”

我有一堆UTF8字符:

stack<wchar_t> tokenStack;
但是编译器不喜欢它:

$g++PropositionalLogic.cpp-o PropositionalLogic

PropositionalLogic.cpp:27:39:错误:引用类型“const value\u type” (也称为'const wchar__t')无法绑定到'const wchar__t[2]类型的左值 void doleftpren(){tokenStack.push(L“(”)}


我尝试搜索错误,但结果是空的。我不确定还应该搜索什么。我也尝试了只添加常规ASCII字符,但出现了相同的错误。如何将字符添加到此堆栈?

您尝试推送字符串而不是字符,将双引号更改为单引号将使其正常工作,并且push函数末尾缺少分号

void doLeftParen() { tokenStack.push( L'(' ); }
你几乎是对的:

以字母
L
开头的字符文字,例如
L'z'
, 是宽字符文字

前缀为
L
的字符是UTF8字符文本

代码中的编译错误是
L”(“
(w/双引号))是多字符文字,但代码希望它是宽字符文字的堆栈

将其更改为单引号:

L'(' // now a wide-char literal

您缺少一个分号问题不在于它是常量,而在于
L”(“
是由两个字符组成的数组,而不是单个字符。
L”(“
(单引号))可能是您想要使用的。请注意,这不是utf8,但可能是UTF16我认为您指的是“Unicode字符”-UTF-8是一种传输编码,通常通过
char*
访问。
L'(' // now a wide-char literal