0%

c-getline的用法

在C++中本质上有两种getline函数:

第一种:在头文件中,是iostream类的成员函数。
第二种:在头文件中,是普通函数。

第一种

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
作用是: 从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符,
如果遇到delim 或 字数达到限制,则读取终止,delim都不会被保存进s对应的数组中。

第二种

stream& getline (istream& is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);
用法和上第一种类似,但是读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
函数的变量:
is :表示一个输入流,例如 cin。
str :string类型的引用,用来存储输入流中的流信息。
delim :char类型的变量,所设置的截断字符;在不自定义设置的情况下,遇到’\n’,则终止输入。
另一种用法:
用istringstream iss(string& s)语句空格作为字符串分隔符
再用getline (string& iss, string& str,’ ‘);
表明不断读取s中的字符并存放在str中

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>iss
#include<sstream>
using namespace std;
int main()
{
string s;
getline(cin,s);//输入一行数据包括空格
//当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。
//一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。
istringstream iss(s);//istringstream用吧空格作为字符串分隔符
string temp;
while(getline(iss,temp,' '))
{
cout<<temp<<endl;
}
return 0;
}