关于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函数这个方法还可以用于其它输入,比如符号,回车等的判断和处理,效率上也没有明显下降