C++程序输出ASCII艺术出现字符异常,请求技术支持
问题原因与修复方案
1. 编译错误(弹出错误窗口的根源)
代码末尾的<< ' ';存在语法错误:C++规定单引号只能包裹单个字符,换行符无法直接放在单引号内,这会触发编译器报错,导致弹出错误提示窗口。
修复方式:直接删除该行即可(你的原始字符串已包含完整换行,无需额外输出),或替换为<< std::endl;(如果需要追加换行)。修复后的代码片段:
// ... 前面代码不变 ░░░░░ ░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░ )" << std::endl; return 0; }
2. 控制台乱码问题
你使用的█、░属于扩展ASCII/Unicode字符,并非标准ASCII字符。Windows控制台默认采用OEM字符集(如CP437),若源码以UTF-8编码保存,直接输出会出现字符不匹配的乱码。
修复方案:强制控制台使用UTF-8编码
在main函数开头添加控制台编码设置代码(需引入windows.h头文件):
#include <iostream> #include <windows.h> // 新增头文件 int main() { SetConsoleOutputCP(CP_UTF8); // 设置控制台输出为UTF-8编码 std::cout << R"( ███████████ ████ ██████████ ███████████ ░█░░░███░░░█░░███ ░░███░░░░░█░░███░░░░░███ ░ ░███ ░ ░███ ░███ █ ░ ░███ ░███ ░███ ░███ ░██████ ░██████████ ░███ ░███ ░███░░█ ░███░░░░░███ ░███ ░███ ░███ ░ █ ░███ ░███ █████ █████ ██████████ █████ █████ ░░░░░ ░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░ )" << std::endl; return 0; }
额外注意:
- 确保源码文件保存为UTF-8编码(若使用MSVC编译器,建议保存为UTF-8带BOM格式,避免编译时字符解析错误)。
- 运行程序后,可将控制台字体切换为Consolas或Lucida Console,确保特殊字符正常显示。
内容的提问来源于stack exchange,提问作者Isak
相关产品推荐
相关产品推荐

