尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

std::wcout输出的不是预期的结果

发布时间:2026/9/28 20:29:17

资讯中心
01
ARTICLE

std::wcout输出的不是预期的结果

std::wcout输出的不是预期的结果
// D:\Qt\Qt5.12.12\Tools\mingw730_32\bin\g.exe // D:\Qt\Qt5.12.12\Tools\mingw730_32\bin\g.exe test.cpp -o test.exe -municode #include windows.h #include iostream #include string int wmain() { std::wcout L 剪贴板测试程序 std::endl; return 0; }为什么程序只打印出了前面的部分内容这个问题是因为std::wcout和Windows 控制台的编码/缓冲机制不兼容导致的。暂时没有想到解决方案临时替换成// D:\Qt\Qt5.12.12\Tools\mingw730_32\bin\g.exe // D:\Qt\Qt5.12.12\Tools\mingw730_32\bin\g.exe test.cpp -o test.exe #include windows.h #include iostream int main() { SetConsoleOutputCP(CP_UTF8); // 控制台输出 UTF-8 std::cout 剪贴板测试程序 std::endl; return 0; }这种可以正常打印。SetConsoleOutputCP(CP_UTF8); // 控制台输出 UTF-8这是什么这行代码把当前控制台窗口的输出代码页设置为UTF-8代码页 65001这样控制台就能正确显示UTF-8 编码的字节流。什么是代码页Code Page控制台本质上只是一个显示字符的窗口它收到的是一串字节需要知道这些字节对应哪些字符才能显示。这个字节 → 字符的映射表就叫代码页。常见的代码页代码页含义936 (CP_GBK)简体中文 GBKWindows 中文系统默认65001 (CP_UTF8)UTF-8437美国英语 DOS1252西欧 Windows// D:\Qt\Qt5.12.12\Tools\mingw730_32\bin\g.exe // D:\Qt\Qt5.12.12\Tools\mingw730_32\bin\g.exe test.cpp -o test.exe #include windows.h #include iostream int main() { std::cout 剪贴板测试程序 std::endl; return 0; }为什么需要它举例你的程序用std::cout输出了 UTF-8 编码的字节剪贴板 的 UTF-8 字节E5 89 AA E8 B4 B4 E6 9D BF如果控制台代码页是936 (GBK)它会把E5 89解释成一个 GBK 字符AA E8解释成另一个……结果就是乱码。如果你先调用SetConsoleOutputCP(CP_UTF8)控制台就按UTF-8 规则解析这些字节正确显示剪贴板。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。