在我学习 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
你不会注意到这一点。否则,就像您看到的那样。
关于C++ 不会打印尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61470335/