首页 > 解决方案 > 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;
}

第一次运行可执行文件

execution_after_first_time

之后运行可执行文件

execution_after_first_time

附加信息

标签: c++powershellvisual-studio-codestd

解决方案


推荐阅读