C++中getline函数的使用
2017-07-04 16:41
155 查看
http://www.cnblogs.com/hu983/p/5573607.html
代码:
输入输出:
分析:
C++中有两个getline函数,一个是在string头文件中,定义的是一个全局的函数,函数声明是istream& getline ( istream& is, string& str, char delim )与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 <iostream> 2 #include <cstdio> 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<<s[i]; 14 i++; 15 } 16 cout<<endl<<i<<endl; 17 cin.clear(); //当failbit位为1时需要clear,否则后面的getline读取为空字符串 18 19 string str; 20 getline(cin,str); 21 cout<<str<<endl; 22 getline(cin,str,'#'); 23 cout<<str<<endl; 24 getline(cin,str); 25 cout<<str<<endl; 26 27 return 0; 28 }
输入输出:
(input)slkdsa;34 slkd 4 sa;34 (input)hel#id hel id
分析:
C++中有两个getline函数,一个是在string头文件中,定义的是一个全局的函数,函数声明是istream& getline ( istream& is, string& str, char delim )与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 <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 int main(){ 7 8 string s; 9 while(getline(cin,s)){ 10 cout<<s<<endl;; 11 } 12 13 return 0; 14 }
相关文章推荐
- C++ getline函数的使用
- C++中getline函数的使用
- C/C++中,2个getline函数使用
- C++——getline函数的使用
- C++ getline函数的使用
- 使用C++和Directx开发GUI(三)
- 使用 C# 和 C++.NET 开发的 .NET 应用程序实例列表
- 使用C++和DirectX开发GUI - 资源编辑器及其它
- C++中函数对象的使用
- (大卫的阅读笔记)C++中使用union的几点思考
- C++开发环境使用感受
- C/C++中macro的一些特殊使用
- 侯捷 1999.04.08《在 console mode 中使用 C/C++ 编译器》
- 面向对象的Windows编程实战(上)(使用C++和Win32 API)
- Tuxedo 8.1 XML C++ Parser的使用(转自BEA中国网站)
- C++ Builder和托管C++中属性的使用建议
- 使用C++和Directx开发GUI(一)
- 在C#中使用C/C++写的DLL
- C++指针使用方法解惑
- 在 C++Builder 工程里使用 Visual C++ DLL——第2部分:C++ 类