关于c++中以空格分隔的数字数据的一种读取方法


最近在做题时发现了这样一个问题,有些题目的数据是以单行给出的,比如(2 3 -92 234 275 -7)这样的数列,用cin读取不太方便(cin一般以换行结束一个数据的输入),所以常规做法是将之转化为字符串再行处理,但是在已知数列长度的情况下可以用以下方法读取;

已知长度为N

for(i=0;i

cin>>a[i];

这种读取方法在实现上更方便(在一个新手看来,或许STL中有更好的方法不需要知道N)

---------------------------------------------

(不需要知道N)

再加点内容吧,要不然这篇也太水了点。。。

其实可以用cin>>noskipws读取所有字符

然后判断读入的字符是否是数字,如果是,那么把它放回到标准输入流,再以普通方式读取该数字,要用cin.putback();

具体可以这么写

while(cin>>c;){

if(isdigit(c))///isdigit()是标准库函数,里还有很多非常方便的类似函数

cin.putback(c);放回去。。。

cin>>number;

结合其他ctype函数这个方法还可以用于其它输入,比如符号,回车等的判断和处理,效率上也没有明显下降

相关