c++string标准输入和getline()整行读入

1、使用标准IO操作读写string对象

  我们都知道,使用标准iostream操作来读写int ,double等内置类型的值,同样,我们也可以使用IO操作来读写string对象

c++ code:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int main()
 5 {
 6     string s;
 7     cin >> s;//从输入流中读取字符序列到对象s
 8     cout << s << endl;//输出对象s
 9     system("pause");
10     return 0;
11 }

这段程序首先定义了一个空的string对象,然后将标准输入找中的内容读取到对象s中,具体实现:在执行读取操作的时候,string对象会自动忽略开头的空白(如空格符、换行符、制表符等),并从第一个真正的字符开始读入,知道遇到下一个空白字符为止。因此,使用cin>>只能从标准输入中读取单个词。

如上所述,如果输入的是"  hello  word!  "(注意开头和结尾以及中间是空格),则输出的是hello。

2、使用getline()读取一行

有时候我们希望在最终的字符串中保留输入时的空白符,这时候应该用getline函数来替代原来的>>运算符。getline函数的参数是一个输入流和一个string对象,原型是:getline(cin,string对象),函数从给定的输入流中读入内容,直到遇到换行符为止,但是此时的换行符要被读入,然后把所读入的内容存到string对象中,但此时不存入最后那个换行符。getline只要遇到换行符就停止读入并且返回string对象,哪怕一开始输入就是换行符也是如此,只不过会返回一个空的string对象。和输入运算符一样,getline也会返回它的流参数,所以可以用getline的结果作为条件。

c++ code:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int main()
 5 {
 6     string line;//每次读入一整行,知道遇到换行符结束读入
 7     while (getline(cin,line))
 8         if (!line.empty())
 9             cout << line << endl;
10     system("pause");
11     return 0;
12 }

 欢迎评论!

posted on 2019-03-17 16:51  new一个世界  阅读(15015)  评论(0编辑  收藏  举报

导航