前言
getline()函数在c++中有两种用法,第一种定义在
<
i
s
t
r
e
a
m
>
<istream>
<istream>头文件中,第二种定义在
<
s
t
r
i
n
g
>
<string>
<string>头文件中。getline()在这两种用法中都是用于读入一行字符串,可以带空格等特殊字符,在第二种用法中getline的第一个参数传的是流
,比如:cin和stringstream可以用getline和stringstream实现split(字符串的分割)
可以跳转到:c++ split 实现字符串分割
~~~~
第一种用法
在<istream>的getline函数有两种重载形式
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
c++ api 说明
通俗的讲: 从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符,如果遇到delim标识符或字数达到限制,则读取终止。delim标识符会被读取,但是不会被保存进s对应的数组中。注意,delim标识符在指定最大字符数n的时候才有效。
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s1[100],s2[100];
//输入的数据:aa,bb,cc
//第一种重载
cin.getline(s1,100);
cout<<s1<<endl;//输出aa,bb,cc
//第二种重载
cin.getline(s2,100,',');
cout<<s2<<endl;//输出aa
cin.getline(s2,100,',');
cout<<s2<<endl;//bb
return 0;
}
第二种用法
在<string>中的getline函数有四种重载形式
istream& 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);
c++ api 说明用法和上第一种类似,但是读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
文章来源:https://www.toymoban.com/news/detail-438110.html
is:表示一个输入流,例如cin。
str:string类型的引用,用来存储输入流中的流信息。
delim:char类型的变量,所设置的截断字符;在不自定义设置的情况下,遇到’\n’,则终止输入。文章来源地址https://www.toymoban.com/news/detail-438110.html
#include<bits/stdc++.h>
using namespace std;
int main(){
string str;
//输入aa,bb,cc
getline(cin,str);
cout<<str<<endl;//aa,bb,cc
getline(cin, str, ',');
cout<<str<<endl;//aa
return 0;
}
到了这里,关于c++ getline()详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!