我有一堆UTF8字符:
stack<wchar_t> tokenStack;
我尝试像这样添加:
void doLeftParen() { tokenStack.push( L"(" ) }
但是编译器不喜欢它:
$ g ++ PropositionalLogic.cpp -o PropositionalLogic
PropositionalLogic.cpp:27:39:错误:对'const value_type'类型的引用 (又名'const wchar_t')无法绑定到'const wchar_t [2]'类型的左值 void doLeftParen(){tokenStack.push(L“(”)}
我尝试搜索错误,但是空了。我不确定我还应该寻找什么。我也试过添加一个常规的ASCII字符,但同样的错误。如何在此堆栈中添加字符?
答案 0 :(得分:4)
你试图将字符串推入而不是字符串,将双引号更改为单引号会使其正常工作,而且在推送函数结束时缺少分号
void doLeftParen() { tokenStack.push( L'(' ); }
答案 1 :(得分:3)
你几乎是对的:
来自lex.ccon
以字母
L
开头的字符文字,例如L'z'
, 是一个宽字符字面值。
前缀为L
的字符不 UTF8字符文字。
代码中的编译错误L"("
(带双引号)是多记录字面,但代码期望它是宽字符文字的堆栈< / em>的第
将其更改为单引号:
L'(' // now a wide-char literal