【问题标题】:error C2308: concatenating mismatched strings错误 C2308:连接不匹配的字符串
【发布时间】:2012-05-13 22:10:51
【问题描述】:

在尝试编译 Visual Studio 2010 中的 Rosettacode 中的 Maze Generator/Solver in C 时,我在编译过程中遇到了问题。

下面一行

#   define SPC " "
wchar_t glyph[] = L""SPC"│││─┘┐┤─└┌├─┴┬┼"SPC"┆┆┆┄╯╮ ┄╰╭ ┄";

正在抛出错误

1>d:\projects\maze_cpp\maze_cpp\main.cpp(14): error C2308: concatenating mismatched strings
1>          Concatenating wide "" with narrow "?????? ??? ?"

考虑到我对Unicode的了解有限,以及MSDN中对错误的不友好描述,我对这个问题以及如何解决它感到困惑

【问题讨论】:

  • 它甚至在这里显示您在字符串中嵌入的 "SPC" 没有被标记为文本,所以问题就像 hmjd 说您需要转义 "

标签: c++ c windows visual-c++ unicode


【解决方案1】:

您需要转义宽字符串文字中的"s:

wchar_t glyph[] = L"\"SPC\"¦¦¦-++¦-+++---+\"SPC\"?????? ??? ?"; 

编辑:

我错过了SPC 宏(Luchian 和 jrok 已经发布):

#define SPC L"  "
wchar_t glyph[] = L"" SPC L"¦¦¦-++¦-+++---+" SPC L"?????? ??? ?";

【讨论】:

  • 这可以编译,但我怀疑它是否符合他的要求。他想将定义的 SPC 与其他字符串连接起来。
  • @LuchianGrigore,是的。我错过了SPC 宏。
  • 谢谢它的工作。奇怪为什么VC++有这么严格的要求?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
  • 2012-12-31
相关资源
最近更新 更多