我一直在尝试制作一个程序,该程序要求我读取符号直到换行。我看到很多人getline()
在类似问题中提出了建议,但我想知道是否还有其他方法可以做到这一点,主要是因为我的代码到目前为止的工作方式。
#include <iostream>
#include <string>
int main()
{
std::string str;
while(true)
{
std::cin >> str;
std::cout << str << " ";
//some actions with token
}
}
我觉得这段代码有趣的是,它首先读取所有输入,然后当我按下 Enter 键时,它会将它们全部写入,例如,如果我输入
1 2 3 a b c
我按回车后得到输出。那么有没有一种方法可以利用它来发挥我的优势并且只接受一行输入?
您看到输入后的输出行为,很可能是由于缓冲区被刷新。在我知道的大多数情况下,这只是您与stdout
终端交互方式的产物,根本不应该改变stdin
读取方式。
你最好的选择绝对是istream::getline
,它在C++ 参考中有一个很好的例子:
// istream::getline example
#include <iostream> // std::cin, std::cout
int main () {
char name[256], title[256];
std::cout << "Please, enter your name: ";
std::cin.getline (name,256);
std::cout << "Please, enter your favourite movie: ";
std::cin.getline (title,256);
std::cout << name << "'s favourite movie is " << title;
return 0;
}
有关缓冲区刷新的更多信息,我发现了一个不错的问题:刷新缓冲区是什么意思?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句