首页 > 解决方案 > C++ 不会打印尾随空格

问题描述

在我学习 C++ 的简单程序中,我问用户他们的名字,然后问候他们。

#include <iostream>

int main() {
    std::string name;

    std::cout << "Enter your name: ";
    std::getline(std::cin, name);

    std::cout << "Hello, " << name << "!\n";
}

但是,这是我在 CLion 中的结果:

在此处输入图像描述

我希望程序在提示输入我的名字后打印出一个尾随空格。但是,在我给程序输入后它会打印空间。我只在 CLion 中经历过这种情况,但在其他 IDE 中没有。为什么会发生这种情况,我该如何解决?

标签: c++

解决方案


你需要刷新你的流:

std::cout << "Enter your name: " << std::flush;

std::cout是一个缓冲流,这意味着虽然您对它的写入不会立即写入底层设备,但它存储在缓冲区中。这样做是出于性能原因。std::endl有一个隐式刷新操作,这就是为什么如果你总是std::endl在请求输入之前添加 a 就不会注意到这一点。否则,就像你看到的那样,这可能会发生。


推荐阅读