您的位置:首页 > 编程语言 > C语言/C++

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

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

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

#include<iostream>

#include<vector>

#include<cctype>

using namespace std;

int main()

{

vector<int> 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<<x<<" ";

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: