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 }
欢迎评论!
你只管努力,剩下的交给天意!