使用getline读取一整行——与cin的区别
如果我们用标准库中的iostream将标准输入的内容(cin)读取到s中。在执行读取操作时,string对象会自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止。
*注意不要与初始化(直接初始化和拷贝初始化)混淆*
如果我们希望能在最终读入的字符串中保留输入时的空白符,这时应该用getline函数代替原来的>>运算符。getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符已被读进来了),然后把所读的内容存入到那个string对象中去(注意不存换行符)。如果输入一开始就是换行符,那么所得的结果是个空string。
和输入运算符一样,getline 也会返回它的流参数。因此既然输入运算符能作为判断的条件,也能用getline的结果作为条件。
#include<iostream> #include<string> using std::cout; using std::endl; using std::string; int main() { string line; //每次读入一整行,直至到文件末尾 while(getline(cin,line)) cout<<line<<endl; //使用endl结束当前行并刷新显示缓冲区 return 0; }触发geline函数返回的那个换行符实际上被丢弃掉了,得到的string对象中并不包含该换行符。
