C++编程中如何在循环输入中使输入停顿?
下面是一个连接字符串的程序,即先将若干字符串读入到一个字符串向量中然后连接为一个字符串:
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
using namespace std;
string join(vector<string> v)
{
vector<string>::iterator iter=v.begin();
iter++;
while(iter!=v.end())
{
v[0]+=*iter;
iter++;
}
return v[0];
}
int main()
{
vector<string> v;
string tmp,result;
int i;
while(1)
{
v.clear();
cout<<"请输入若干字符串:"<<endl;
while(1)
{
while(cin>>tmp)
{
v.push_back(tmp);
}
if(!v.empty())
break;
else
cerr<<"您未输入任何字符串,请重新输入!"<<endl;
}
result=join(v);
cout<<"连接结果为"<<result<<"."<<endl;
cout<<"如需再次输入请按1,退出请按0"<<endl;
system("pause");
cin>>i;
if(!i)
break;
}
return 0;
}
问题是在第一次循环后,如果要重新输入,程序会持续跳过输入而不断提示未输入任何字符串,请问怎样修改呢? C++ 输入
[解决办法]
system("pause");
这句不要,改成下面的:
cin.clear();
就ok了
原因是你第一次输入多个字符串,结束的时候用的ctrl+z停止输入的。
这样会使cin流设置文件结束标志(不然,第一次循环停不下来的)。
所以下次输入前要清楚这个标志,用cin.clear()
[解决办法]
老问题拉!
你第一次输入的结束有个回车也在 标准输入缓冲区里面,
当你第二次输入的时候,它会读如第一次的回车符的!
所以你要每次读完后清空下你的缓冲区的
方法一楼