我一直在尝试实现一个简单的代码,它将一个句子作为用户的输入,将其存储在一个字符串中并显示回来。
问题如下: 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/