c++ - C++ 和 PowerShell:带有 ANSI 颜色的 std::cout 奇怪间距
问题描述
我面临着一个奇怪的问题std::cout
,ANSI 颜色代码和 PowerShell(VS Code 中的集成终端)。
我编写了一个示例程序,要求用户输入字符串。在提示中,我使用 ANSI 颜色代码,因此默认值(如果用户不输入任何内容)显示为灰色而不是白色。
第一次运行可执行文件按预期运行,但在第二次运行时,用户按下后会出现奇怪的间距Enter。在再次编译代码之前,此问题一直存在。
我注意到,当我省略 ANSI 颜色代码时,这个间距也会消失。不过我还是想用颜色。
请参阅下面的示例代码和显示输出的图像。
是什么导致了这个问题?std::cout
在 C++中使用彩色输出有不同的方法吗?非常感谢您的时间。
示例代码
#include <iostream>
#include <string>
int main() {
std::string input;
std::cout << "Input: \x1b[37;2m(default value)\x1b[0m ";
std::getline(std::cin, input);
if(input.empty()) {
input = "default value";
}
std::cout << input << std::endl;
return 0;
}
第一次运行可执行文件
之后运行可执行文件
附加信息
- 操作系统:Windows 10
- 终端:VS Code 集成 PowerShell
- C++ 编译器:g++ 8.1.0
解决方案
推荐阅读
- java - Android:工具栏导航图标 Onclick 显示强调色
- javascript - javascript中的pushstate/popstate是否正确?
- python - 在烧瓶应用程序上使用 celery 时的元类冲突
- c - 将 2D 数组最后一个元素设置为 NULL 正在删除第一个元素
- laravel - Laravel 6,将多个数组从控制器传递到视图
- django - 线程 django-main-thread 中的异常:
- css - Angular 6 - LESS 动画在部署后不起作用
- python - 在 Azure / Jupyter 笔记本中隐藏/锁定单元格
- c# - 如何将复杂数组发布到 mvc c# api
- sql-server - Visual Studio 数据库项目在发布时忽略错误