cin流的输入问题

为什么我用pascal的时候就没遇到这么多问题,一看到c++的字符串现在就头大。

不过我还是想用cin不要用scanf

一般输入要用到 cin>> cin.getline() cin.get()  #include <iostream>

或者 getline() #include <string>

一般情况下 就用cin就好了 需要注意一下 cin一个数字 然后回车 例如 cin>>year; .....  cin.get(ch); 这种情况下 ch会变成换行符 因为 cin不会丢弃换行符 只是会跳过他

所以如果cin>>year; ..... cin>>ch; 那么ch就是新的新的一行的字符串了

也就是说cin会自动跳过换行符 注意是跳过 也就是换行符等空白还是会留在缓冲区的

那么对于考试来说呢 一般情况下 尤其是读入数字 cin可以无视一切空格 换行符 此时就放心用即可

那如果是读入了字符呢 会很成功的跳过换行符 不过还是会读入空格 如果是读入字符串string类型呢 那么会在遇到空格 或 换行符时停止读入 并且丢弃它们

那么出现了考试中经常有的问题 如果要读入一整行怎么办 显然我们直接使用getline函数 可以直接获得这一行的 字符串 并且会丢弃换行符 且string类型没有‘\0’结尾

(注意getline(cin,str))

其实能够很开心的丢弃换行符是最好的了(反正一般也用不到) 不过cin不是跳过换行符吗 例如当我们cin>>ch;这样一个字符的时候 它总会跳过换行符 除非我们使用cin.get(ch);

另外值得一提的是string不仅在处理上面功能强大 而且它还对许多类型友好 尤其是我们可以直接将一个char类型的字符链接在string的后面 string的访问也就像是一个数组一样简单

此外此外 whlie(cin>>xxx)会一直读入知道文件结尾EOF 或者 其它奇怪情况 具体的我就没研究了 反正考试应该没有这种问题

先到这里吧 遇到问题的时候再去查资料好了

posted @ 2015-07-24 11:59  JimmyLin^_^  阅读(370)  评论(0编辑  收藏  举报