【问题标题】:Error C2679 when attempting to use std::wcout << wstring-var; vc++ 2008 express尝试使用 std::wcout << wstring-var; 时出现错误 C2679 vc++ 2008 快递
【发布时间】:2010-11-29 04:02:49
【问题描述】:

尝试在 vc++ 2008 express 中输出 wstring 时,我收到一条相当奇怪的错误消息:

错误 C2679: 二进制 '

如果我理解正确,它会报告 wcout 不接受 wstring?我请人在 linux 下编译这段代码,它运行良好。我还在另一台使用 vc++ 2008 express 的计算机上尝试了相同的代码,但仍然失败。 vc++ 2008 中的 std 已知问题?

#include <iostream>

int main()
{
 std::wstring unicode_test = L"Unicode var";
 std::wcout << L"Unicode non-var" << std::endl;
 std::wcout << unicode_test << std::endl;    //<-- This line fails!
}

我正在使用 vc++ 2008 express sp1,所有更新都达到 KB948127。我知道控制台需要更改代码页,但这甚至没有编译。谢谢。

【问题讨论】:

    标签: unicode visual-c++-2008-express


    【解决方案1】:

    您需要#include &lt;string&gt;。我不确定标准是怎么说的,但我很确定&lt;iostream&gt; 不需要导出所有&lt;string&gt;,如果有的话。

    [编辑]至少cplusplus.com 甚至没有将string 列为&lt;iostream&gt; 中声明的类型。不,这不是标准,我知道...[/edit]

    【讨论】:

    • 让你傻眼的是声明wstring 的行有效。包括 让你有足够的 能够声明一个,但不是operator&lt;&lt; - 我想只是帮助到伤害。
    【解决方案2】:

    对于有此问题的用户,您可能需要在控制台中启用多字节打印。在这里查看答案:https://stackoverflow.com/a/41584090/1599699

    还有我的评论:

    由于 sizeof(wchar_t) == sizeof(char) * 2,我无法打印我实例化的长度大于我提供的数据的 wstring,然后打印任何内容都没有成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      相关资源
      最近更新 更多