getline()的定义及应用

3 篇文章 0 订阅

getline的两种定义

参考http://blog.csdn.net/yelbosh/article/details/7483521

1.全局函数,在头文件#include<string>中,函数声明为:
- istream& getline ( istream& is, string& str, char delim )
- istream& getline ( istream& is, string& str )
2. istream的成员函数,函数声明为:
- istream& getline (char* s, streamsize n )
- istream& getline (char* s, streamsize n, char delim )

常用的是全局函数这种情况,getline函数的基本功能是将流istream& is 中的字符串存到string& str 当中去。

  • 全局函数中两种声明的区别是第一种加了一个限定符号char delim,默认的限定符号为‘\n’,也即读到一个换行符就终止继续读取。
  • istream的getline是在全局函数的getline函数的基础上,又多了一个终止读取的条件,即根据已读取的字符的个数来判定,实际上是读取n-1个字符,因为最后要为‘\0’留下一个位置。其他地方二者基本相同。
  • 判断空行的办法是str.length()==0
  • 判断输入结束的办法是is.eof()

C++依次读取文件中的字符串——getline()函数的应用

转自http://blog.csdn.net/sibo626/article/details/6781036

例如文件test.txt中有这么一段话:I am a boy. You are a girl.

如何一次一个的读取单词,即第一次读取I,第二次读取am,依次类推。

方法1:

#include <fstream>  
#include <string>  
#include <iostream>  
using namespace std;  

int main()  
{  
     ifstream ifs("test.txt");     // 改成你要打开的文件  
    streambuf* old_buffer = cin.rdbuf(ifs.rdbuf());  

     string read;  
     while(cin >> read)           // 逐词读取方法一  
      cout << read;  
     cin.rdbuf(old_buffer);       // 修复buffer  
}  

方法2:

#include <iostream>  
#include <fstream>  
using namespace std;  

int main()  
{  
    ifstream ifs("test.txt");   // 改成你要打开的文件  
    ifs.unsetf(ios_base::skipws);  
    char c;  
    while(ifs.get(c))           // 逐词读取方法二  
     {  
       if(c == ' ')  
          continue;  
       else  
          cout.put(c);  
    }  
}  

方法3:

#include <iostream>  
#include <fstream>  
#include <string>  
using namespace std;  

int main()  
{  
  ifstream ifs("test.txt");      // 改成你要打开的文件  
  string read;  
  while(getline(ifs, read, ' ')) // 逐词读取方法三  
  {  
    cout << read << endl;  
  }  
}  

方法4:

#include <fstream>  
#include <iostream>  
using namespace std;  
int main()  
{  
  ifstream ifs("test.txt");            // 改成你要打开的文件  
  char buffer[256];  
  while(ifs.getline(buffer, 256, ' ')) // 逐词读取方法四  
  {  
    cout << buffer;  
  }  
}  
### 回答1: ifstream.getline()函数是C++中用于从文件中读取一行数据的函数。它的语法如下: istream& getline (char* s, streamsize n, char delim); 其中,s是一个字符数组,用于存储读取到的数据;n是一个整数,表示最多读取的字符数;delim是一个字符,表示行结束的标志符。 该函数会从文件中读取一行数据,直到遇到行结束标志符为止。读取到的数据会存储到s中,最多读取n个字符。如果读取到的数据超过了n个字符,剩余的数据会被丢弃。如果文件中没有数据可读,该函数会返回一个空指针。 ### 回答2: C++语言中,ifstream.getline()函数是用来从文件中逐行读取数据的函数。该函数的语法如下: istream& getline (char* s, streamsize n, char delim); 其中,s是一个指向字符数组的指针,表示读取到的数据将会存放在此字符数组中;n表示最多可以读取的字符个数,即一行数据最多可以读取的字符数;delim是一个指定分隔符,当读取到该分隔符时,读取操作将会停止。 使用该函数时,需要先打开一个文件流,并将其和文件名关联。打开文件流的代码示例如下: ifstream fin; fin.open("filename.txt"); 接下来,就可以调用getline()函数开始读取文件了。读取文件的代码示例如下: char line[100]; while (fin.getline(line, 100)) { // 操作读取到的数据 } 在上面的代码中,我们使用了一个while循环,每次循环中都会调用getline()函数,将读取到的数据存放在line数组中。如果读取到的数据行数未超过100行,则该函数将会返回true,否则将返回false,从而结束循环。 在实际编程中,我们还可以在getline()函数的第三个参数中指定分隔符。如果我们指定的分隔符是空格,则该函数将会一直读取到空格为止;如果我们指定的分隔符是逗号,则该函数将会一直读取到逗号为止。 总的来说,ifstream.getline()函数是一个用于从文件中逐行读取数据的非常有用的函数,可以帮助我们在C++程序中进行文件操作。 ### 回答3: 在C++语言中,fstream头文件主要是用于实现对文件的数据读写操作,在这个头文件里面,有很多常用的文件操作函数。其中,就包括了ifstream.getline()函数。这个函数是用来从指定的文件中读取一行数据,然后将数据存储到指定的字符数组中。 具体来说,ifstream.getline()函数有两个参数。第一个参数是一个字符数组,它用来指定存储读入的数据的位置。第二个参数是一个整形数值,它用来指定读入数据的最大长度。这个函数会在读满了最大长度之后停止读取。如果读取到了文件结尾,则也会停止读取。 当该函数被调用时,会从指定的文件中读取一整行数据(包括空格和换行符),并将其存储到指定的字符数组中。这个函数也可以接受某个指定的分隔符作为参数,例如getline(fin, str, ','),表示以“逗号”作为分隔符,读取指定文件的一行数据。 使用ifstream.getline()函数还需要注意一些事项。例如,当文件中某一行的长度超过所指定的最大长度时,这个函数会自动停止读取,因此有可能会导致数据不完整。此外,在读取文件之前,你需要先用ifstream.open()函数打开文件,并在读取完成之后,使用ifstream.close()函数关闭文件以释放资源。 总之,ifstream.getline()函数是C++语言中非常常用的文件读取函数之一,利用它可以轻松地从文件中读取一整行数据,并将其存储到指定的字符数组中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值