C++ 不会打印尾随空格

标签 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 中的结果:

enter image description here

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

最佳答案

你需要刷新你的流:

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

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

关于C++ 不会打印尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61470335/

相关文章:

c++ - 引用特定函数参数

c++ - Microsoft 等效于 WebkitGTK 悬停链接信号

c++ - 为什么 MonitoringManager::OnRequestSucceeded() 中的 assert(s_monitors) 会失败?

c++ - 插入 Asus Xtion Pro 时无法使用 OpenCV 从网络摄像头获取图片

c++ - 在 Linux 中使用原始套接字时,802.3 header 长度始终为 256

C++ - 一次读入一个单词

c# - MFC中有没有类似DataGridView的控件

c++ - 指向字符地址的指针的值

c++ - 编译 Charniak 的解析器

c++ - 如何使用 stb_image 将像素颜色数据写入 bmp 图像文件?