您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页C++中getline函数的使用

C++中getline函数的使用

来源:抵帆知识网
C++中getline函数的使⽤

代码:

1 #include 2 #include 3

4 using namespace std; 5

6 int main(){ 7

8 char* s;

9 s = new char[50]; //必须要分配空间10 cin.getline(s,5);11 int i = 0;

12 while(s[i] != '\\0'){13 cout<16 cout<17 cin.clear(); //当failbit位为1时需要clear,否则后⾯的getline读取为空字符串18

19 string str;

20 getline(cin,str);21 cout<27 return 0;28 }

输⼊输出:

(input)slkdsa;34slkd4sa;34

(input)hel#idhelid

分析:

C++中有两个getline函数,⼀个是在string头⽂件中,定义的是⼀个全局的函数,函数声明是istream& getline ( istream& is, string& str, chardelim )与istream& getline ( istream& is, string& str );

另⼀个则是istream的成员函数,函数声明是istream& getline (char* s, streamsize n )与istream& getline (char* s, streamsize n, char delim );注意第⼆个getline是将读取的字符串存储在char数组中⽽不可以将该参数声明为string类型,因为C++编译器⽆法执⾏此默认转换。

getline函数⼤致流程:

1、⾸先判断istream的failbit位是否为1,为1的话意味着输⼊流的状态有错误,则不进⾏读操作,getline函数结束执⾏2、从当前位置开始从输⼊流中依次读取单个字符并拷贝到缓冲区,直到遇到下列条件满⾜时,循环结束。(1)遇到⽂件尾时停⽌读操作,并设置流对象的结束标记为1

(2)读到调⽤者指定的分隔符时,此时将分隔符之前的字符拷贝到缓冲区中,但分隔符本⾝不拷贝进去,并且下次读操作将从分隔符后的下⼀个字符开始。

(3)已经读了n-1个字符(n是调⽤者传⼊的第⼆个实参_Count的初值),此时要把流对象的错误标志位置1

利⽤getline连续读取直⾄⽂末

1 #include 2 #include 3

4 using namespace std; 5

6 int main(){ 7

8 string s;

9 while(getline(cin,s)){10 cout<13 return 0;14 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务