代码之家  ›  专栏  ›  技术社区  ›  philsquared

std::wcout到XCode中的控制台窗口[关闭]

  •  2
  • philsquared  · 技术社区  · 16 年前

    在Xcode项目中,如果我使用 std::cout 要写入控制台,输出是正常的。

    然而,如果我使用 std::wcout 我没有输出。

    我知道这是一个棘手的问题,在C++中,我一直在搜索,试图找到一个具体的解决方案,在Xcode案。我发现有人建议它应该起作用的几件事是:

    std::cout.imbue( std::locale("") );
    

    std::setlocale(LC_ALL, "");
    

    这两者都没有任何区别。在我决定在接下来的几周里学习facets API,以便能够编写控制台之前,我想我应该向这里尊敬的观众询问一下。

    [更新]

    我认为我一直遇到的问题的原因实际上与我试图打印的一些字符串的特定编码有关。

    如果我只发送一个字符串文字,使用 L"my string" syntax 它起作用了!这似乎是使用UTF32-小端编码。

    我想我们可以考虑关闭这件事。谢谢你的阅读。

    1 回复  |  直到 5 年前
        1
  •  4
  •   Loki Astari    16 年前

    wcout应该像std::cout一样工作。

    以下内容在我的MAC电脑上运行良好:

    #include <iostream>
    
    int main()
    {
        std::cout << "HI" << std::endl;
        std::wcout << L"PLOP" << std::endl;
    }
    

    也许(尽管有些代码会很好)这是因为您没有刷新缓冲区。记住std::cout和std::wcout是缓冲的。这意味着在缓冲区填满或您显式刷新缓冲区之前,输出不会被推送到控制台。

    std::wcout << flush();
    // or
    std::wcout << endl;  // Those also puts a '\n' on the stream.