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 中的结果:
我希望程序在提示输入我的名字后打印出一个尾随空格。但是,在我给程序输入后它会打印空间。我只在 CLion 中经历过这种情况,但在其他 IDE 中没有。为什么会发生这种情况,我该如何解决?
解决方案
你需要刷新你的流:
std::cout << "Enter your name: " << std::flush;
std::cout
是一个缓冲流,这意味着虽然您对它的写入不会立即写入底层设备,但它存储在缓冲区中。这样做是出于性能原因。std::endl
有一个隐式刷新操作,这就是为什么如果你总是std::endl
在请求输入之前添加 a 就不会注意到这一点。否则,就像你看到的那样,这可能会发生。
推荐阅读
- xamarin.forms - 使用 AppShell ContentPage 的页脚不是白色的,为什么?
- c# - WPF 从后面的代码添加的 UserControl 绑定到祖先
- ovirt - 无法在系统和gui级别上升级ovirt
- doctrine - Symfony OneToMany - 基于没有 mappedBy 的条件
- mysql - 如何按一列在表中创建子表?
- android - 导航图不会在深度链接中使用默认参数
- sdk - SDK 2019:stdint.h 看起来很奇怪
- c# - 获取今天、过去和明天的约会列表
- javascript - 使用axios上传多个文件
- ms-word - 是否有可能为连续的多个图表添加标题?