代码:
1 #include 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< 19 string str; 20 getline(cin,str);21 cout< 输⼊输出: (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 4 using namespace std; 5 6 int main(){ 7 8 string s; 9 while(getline(cin,s)){10 cout< 因篇幅问题不能全部显示,请点此查看更多更全内容16 cout<13 return 0;14 }
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务