c++ - std::wcout 到 Xcode 中的控制台窗口

标签 c++ xcode macos unicode iostream

在 Xcode 项目中,如果我使用 std::cout写入控制台输出很好。

但是,如果我使用 std::wcout我没有得到任何输出。

我知道这是 C++ 中的一个棘手问题,我一直在谷歌上搜索以尝试在 Xcode 案例中找到特定的解决方案。我发现建议应该有效的一些事情是:

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

std::setlocale(LC_ALL, "");

这些都没有任何区别。在我决定花接下来的几周时间研究 Facets API 以便能够向控制台写入内容之前,我想我应该向这里尊敬的观众咨询一下。

[更新]

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

如果我只发送一个字符串文字,使用 L"my string" syntax有用!看来这是使用 UTF32 - 小端编码。

但是,我一直将其与使用 NSUTF32BigEndianStringEncoding 编码从 Objective C++ 代码传递的字符串混合在一起。正是这种混合编码导致了问题。

我认为我们可以考虑结束此事。感谢您的阅读。

最佳答案

std::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.

关于c++ - std::wcout 到 Xcode 中的控制台窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/276010/

相关文章:

c++ - c++中的开关中断故障怎么办?

ios - ScrollView 不滚动我的所有内容

ios - 使用设备上的仪器进行自动化测试

linux - 是否可以在 Linux 上使用 xcodebuild?

objective-c - 音频图输出单元回调函数-无法读取数据

c++ - STL Vector是否默认使用 'new'和 'delete'进行内存分配?

python - 这是所有编程语言的普遍错误吗

c++ - 从 C 或 C++ 中的函数返回多个数据项

mysql - 微软 Visual Studio 2017 Mac : Where is server explorer?

带有 Eclipse 和 Maven 的 OSX 上的 JAVA_HOME