以下知识点来源于这篇博文,感谢,侵删
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin直接从输入缓冲区中取数据。正因为cin是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin会直接取得这些残留数据而不会请求键盘输入。
回顾之前的代码,你会发现连续的cin或者while循环里的getline,都不会出错,但二者混用就有可能出现差错,留做笔记,涨姿势了。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
using namespace std;
const int maxn = 1000;
int main()
{
int n;
cin>>n;
string strarray[maxn];
getchar();//这步将缓冲区残留的吃掉,就可以不妨碍下面getline吃进错误的回车了,谁TM想出的这个方法,真nb
for(int i = 0;i<n;i++)
{
getline(cin,strarray[i]);
}
for(int j = 0;j<n;j++)
{
cout<< '6' + strarray[j].substr(6)<<endl;
}
return 0;
}