getline用法

发布时间:2018-07-01 09:45:25   来源:文档文库   
字号:

GetLine

目录

getline功能

getline参数

getline说明

编辑本段

getline功能

  getline是string类对象的成员函数,属于string IO 操作。用于读取整行文本

编辑本段

getline参数

  getline(cin,str);

  cin:输入流

  str:string对象

编辑本段

getline说明

  getline函数从输入流的下一行读取,并保存读取的内容到str中,但不包括换行符。getline 函数将 istream 参数作为返回值,和输入操作符一样也把它用作判断条件。 

  范例:

  #include

  #include

  using namespace std;

  int main()

  {

  string line;

  while(getline(cin,line))

  cout<

  return 0;

  }

  结果:

  输入 line1 ----回车换行

  显示为空

  输入 line2 ----回车换行

  显示 line1

  输入 line3 ----回车换行

  显示 line2

  ----(以此类推)

getline的原型如下:

getline(char* c,int i,char c); 表示读入i个字符,或者遇到结束符c为止的字符数,保存到c中。

getline(char*,int); 表示读入i个字符到c中。注意读入的字符数应比实际的大1,因为读入的是字符串,字符串将会以'\0'作为结束,如果你要读入3个字符,那么i的值应该为4

注意getline会读取并丢弃分界符。

后面的自已搞定,创建一个文件流类对象,然后用这个文件流来调用getline函数,比如

ifstream hy1(“hyong1.txt”)//创建hy1流,并打开文件以便读取内容。

char c[333];

hy1.getline(c,3,'0'); //表示,把hy1流关联的hyong13个字符或者遇到'0'的字符数读入到c中。

假设有一个叫 data.txt 的文件, 它包含以下内容:

Fry: One Jillion dollars.
[Everyone gasps.]
word/media/image1.gifAuctioneer: Sir, that's not a number.
word/media/image1.gif数据读取, 测试 word/media/image1.gif


以下就是基于 data.txt 的数据读取操作:

#include
include
#include
word/media/image1.gif
word/media/image1.gifusing namespace std;
word/media/image1.gif
//输出空行
void OutPutAnEmptyLine()
word/media/image2.gif{
word/media/image4.gif     cout<<"\n";
word/media/image5.gif}
word/media/image1.gif
//读取方式: 逐词读取, 词之间用空格区分
word/media/image1.gif//read data from the file, Word By Word
word/media/image1.gif//when used in this manner, we'll get space-delimited bits of text from the file
word/media/image1.gif//but all of the whitespace that separated words (including newlines) was lost.
word/media/image1.gifvoid ReadDataFromFileWBW()
word/media/image6.gifword/media/image2.gif{
word/media/image4.gif     ifstream fin("data.txt");  
word/media/image4.gif    string s;  
word/media/image4.gif    while( fin >> s )
word/media/image8.gifword/media/image9.gif    {    
word/media/image4.gif         cout << "Read from file: " << s << endl;  
word/media/image10.gif     }
word/media/image5.gif}
word/media/image1.gif
word/media/image1.gif//读取方式: 逐行读取, 将行读入字符数组, 行之间用回车换行区分
word/media/image1.gif//If we were interested in preserving whitespace,
word/media/image1.gif//we could read the file in Line-By-Line using the I/O getline() function.
word/media/image1.gifvoid ReadDataFromFileLBLIntoChar()
word/media/image6.gifword/media/image2.gif{
word/media/image4.gif     ifstream fin("data.txt");
word/media/image4.gif    const int LINE_LENGTH = 100;
word/media/image4.gif    char str[LINE_LENGTH];  
word/media/image4.gif    while( fin.getline(str,LINE_LENGTH) )
word/media/image8.gifword/media/image9.gif    {    
word/media/image4.gif         cout << "Read from file: " << str << endl;
word/media/image10.gif     }
word/media/image5.gif}
word/media/image1.gif
word/media/image1.gif//读取方式: 逐行读取, 将行读入字符串, 行之间用回车换行区分
word/media/image1.gif//If you want to avoid reading into character arrays,
word/media/image1.gif//you can use the C++ string getline() function to read lines into strings
word/media/image1.gifvoid ReadDataFromFileLBLIntoString()
word/media/image6.gifword/media/image2.gif{
word/media/image4.gif     ifstream fin("data.txt");  
word/media/image4.gif    string s;  
word/media/image4.gif    while( getline(fin,s) )
word/media/image8.gifword/media/image9.gif    {    
word/media/image4.gif         cout << "Read from file: " << s << endl;
word/media/image10.gif     }
word/media/image5.gif}
word/media/image1.gif
word/media/image1.gif//带错误检测的读取方式
word/media/image1.gif//Simply evaluating an I/O object in a boolean context will return false
word/media/image1.gif//if any errors have occurred
word/media/image1.gifvoid ReadDataWithErrChecking()
word/media/image6.gifword/media/image2.gif{
word/media/image4.gif    string filename = "dataFUNNY.txt";  
word/media/image4.gif     ifstream fin( filename.c_str());  
word/media/image4.gif    if( !fin )
word/media/image8.gifword/media/image9.gif    {   
word/media/image4.gif         cout << "Error opening " << filename << " for input" << endl;   
word/media/image4.gif         exit(-1);  
word/media/image10.gif     }
word/media/image5.gif}
word/media/image1.gif
word/media/image1.gifint main()
word/media/image6.gifword/media/image2.gif{
word/media/image4.gif     ReadDataFromFileWBW(); //逐词读入字符串
word/media/image4.gif     OutPutAnEmptyLine(); //输出空行
word/media/image4.gif
word/media/image4.gif     ReadDataFromFileLBLIntoChar(); //逐词读入字符数组
word/media/image4.gif     OutPutAnEmptyLine(); //输出空行
word/media/image4.gif
word/media/image4.gif     ReadDataFromFileLBLIntoString(); //逐词读入字符串
word/media/image4.gif     OutPutAnEmptyLine(); //输出空行
word/media/image4.gif
word/media/image4.gif     ReadDataWithErrChecking(); //带检测的读取
word/media/image4.gif    return 0;
word/media/image5.gif}

输出结果为:
Read from file: Fry:
Read from file: One
Read from file: Jillion
Read from file: dollars.
Read from file: [Everyone
Read from file: gasps.]
Read from file: Auctioneer:
Read from file: Sir,
Read from file: that's
Read from file: not
Read from file: a
Read from file: number.
Read from file: 数据读取,
Read from file: 测试
Read from file:

Read from file: Fry: One Jillion dollars.
Read from file: [Everyone gasps.]
Read from file: Auctioneer: Sir, that's not a number.
Read from file: 数据读取, 测试

Read from file: Fry: One Jillion dollars.
Read from file: [Everyone gasps.]
Read from file: Auctioneer: Sir, that's not a number.
Read from file: 数据读取, 测试

Error opening dataFUNNY.txt for input
Press any key to continue

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自

本文来源:https://www.2haoxitong.net/k/doc/a51df01cc281e53a5802ff48.html

《getline用法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式