c++ - 将句子作为用户的字符串输入读取

标签 c++ string flush

我一直在尝试实现一个简单的代码,它将一个句子作为用户的输入,将其存储在一个字符串中并显示回来。

问题如下: 1、当T=1时,程序立即退出。 2. 当T>1时,循环只运行T-1次。

我认为使用 cin 来存储 T 的值在这里是一个问题。由于cin的一些缓冲能力,输入的T的值是否被存储为一个字符串?

#include <iostream>
#include <string>

int main()
{
int T;
std::cin >> T;
while (T--)
{
    std::string song;
    getline(std::cin, song);
    std::cout << song << std::endl;
}
return 0;
}

最佳答案

如何终止变成T的输入?用换行符。在你读入 T 之后换行会发生什么?它仍然留在输入缓冲区中。下次调用 std::getline 时会发生什么,它将读取的第一个字符是什么?换行符,接下来会发生什么?循环迭代,然后 T 为零(对于第一种情况,T 最初是 1),然后循环,然后程序退出。

这个问题的解决方案是ignore直到并包括换行符的字符。

关于c++ - 将句子作为用户的字符串输入读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30638993/

相关文章:

PHP ob_start&flush - 在循环中打印和清理文本

Python:file.write() 与 file.flush()

c++ - 如何从C调用C++函数?

c++ - sub2Ind matlab 到 c++/opencv 的转换

c++ - 根据属性选择 fstream 或 cout

string - 字符串列表上不区分大小写的模式匹配

c++ - constexpr 循环内 std::array 的值初始化是否有效?

C printf有点奇怪,打印完全是废话

python - 如何对 pandas 系列的元素进行条件分支?

php - 提早刷新 HTML 文档 - 使用 ini_set( 'zlib.output_compression' ,'ON')?