You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向stack<wchar_t>压入字符时编译报错,该如何解决?

解决stack<wchar_t>添加元素的类型不匹配编译错误

你碰到的这个编译错误,核心原因是类型不匹配:你用的L"("是宽字符串字面量,它的实际类型是const wchar_t[2](因为C++里字符串字面量会自动在末尾加一个\0结束符),而你的tokenStack是用来存储单个wchar_t字符的栈,这俩类型完全不兼容,编译器当然会报错。

要解决这个问题,只需要把宽字符串字面量换成宽字符字面量就行——把双引号改成单引号:

void doLeftParen() { tokenStack.push( L'(' ); }

这里再给你明确下两者的区别:

  • L"(":表示一个包含左括号和结束符的宽字符串,本质是数组类型
  • L'(':表示单个宽字符,类型就是wchar_t,完美匹配栈的元素类型

如果是添加普通ASCII字符,同样要用单引号,比如L'b';当然直接写'b'也能正常编译(因为ASCII字符可以隐式转换为wchar_t),但为了保持宽字符类型的一致性,更推荐加上L前缀。

另外提一句,你原代码里函数末尾少了分号,修改的时候记得补上,不然还会触发另一个编译错误哦。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:09:43