c++关于结尾遇到‘\n’或其他特殊字符结束读取的问题(个人总结,大神勿喷)

//程序中经常遇到诸如“遇到回车换行符结束读取”的问题,说一下使用peek()解决的小方法,这里举个例子(这里主要写出程序中读取输入部分)

//假如要求“将输入的整型数据读入数组并处理,读取结束标志为'\n'”

#include

#include

#include

using namespace std;

int main()

{

 vector arr;

 int temp;

 while(cin.peek()!='\n')//这里使用peek()比较方便

 {

   while(cin.peek()==' ')//此循环只为了一种特殊情况:键盘输入时输入的为空格+回车无有效数据,此时程序终止

     cin.get();

   if(cin.peek()=='\n')

     break;

   cin>>temp;

   arr.push_back(temp);

   while(cin.peek()==' ')//此循环为了读取整型数据之后的空格

     cin.get();

 }

for(auto x:arr)//检查数组输入情况

cout<

return 0;

}上述代码解决了在只输入回车换行、数字、空格的情况下正确读取数字的问题。

当输入中还有字符型,想要正确读取整型数据且遇到回车换行结束时循环代码如下:

while (1)
{
while (!isdigit(cin.peek()))//检查是否为非数字
{
if (cin.peek() != '\n')  //如果非数字不为回车的话将其读走
cin.get();
else break;              //为回车换行时退出检查
}
if (cin.peek() == '\n')//数据输入结束
break;
cin >> temp;
arr.push_back(temp);
}

你可能感兴趣的:(c++)