初尝C++
C语言也就是及其马马虎虎,就转到了C++上,一直看着《C++ primer plus》来学习。
跟着书抄代码实现、看着题目编代码实现,遇到过不少卡壳,也有些小小知识记了下来,有些可能依然没有找到答案,只是记下暂时的解决方法,待以后慢慢琢磨,有些或许算是解决了吧~~
最近在C++编程中总是会遇到有些纠结的就是cin了,在“小知识.txt”记录的如下:
1.cin输入:
getline()和get()可以读取带有空格的输入,直到换行符,前一个丢弃换行符,后一个保留在输入序列中:cin.getline(name,20),读取长度最大为19;
cin读取到空格或回车都结束,cin的读取将忽略空格和换行符,不输出,丢弃空格,换行符留在缓冲队列;
cin.get(name,20).get(),后一个用于读取最后的换行符;
用于string读取值:cin或者getline(cin,str1),读取string的长度:str1.size();
计算读取了多少单词,可以判断while( cin >> word ): cin会省略空格和换行,每次读取到空格或者换行,即每次读取为一个单词,读取一次返回一个1;
2.定义int型,输入数字后又输入字符,有可能会出现问题:(现在也没掌握具体会发生的情况)
if(cin.good()) //判断cin流是否正确
{
break;
}
else //cin流错误
{
cin.clear(); //把流重置为正常状态,但缓冲中还存在之前的输入
cin.ignore(); //忽略缓冲里面的字符
cout<<"输入错误的字符,请重新输入:";
cin>>i;
}
可能有点乱,不过大体上比较纠结的是要读取两个变量,一个是int,一个是char,当这种情况连续输入时,前一个输入的换行符有时就是个问题,需要cin.get()或者cin.ignore();
网上有不少类似的问题,但总觉着这样的cin.get或者ignore都是暂时的解决方法......
不过cin的到空格结束似乎还是有不少方便,想数输入了多少单词,直接 while(cin >> word) count++; 就行了。继续看c++ primer plus!