为了账号安全,请及时绑定邮箱和手机立即绑定

请问下,getline里面第二个参数str出现在这里是做什么用的?

请问下,getline里面第二个参数str出现在这里是做什么用的?

浮云间 2022-05-23 15:11:27
有如下语句:ifstream fp1(astDataFileName.c_str());if (!fp1){cout << "fail in open " << astDataFileName.c_str() << endl;cout << "get system size" << endl;exit(0);}int k = 1;string str;for (;!fp1.eof();){getline(fp1,str,'\n');k++;cout << str << endl;}请问下,fp1.eof()是怎么用的,每次读入一个字符,判断是不是文件结束符?还有getline里面第二个参数str出现在这里是做什么用的?是不是读入一行,以换行符作为结束判断语句?下面的cout<<str会输出什么?
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

这个是getline函数的原型及解释 怎么看着和你程序用法不太一样,特别是第二个参数的用法。
istream &getline( char *buffer, streamsize num, char delim );
getline()函数用于输入流,读取字符到buffer中,直到下列情况发生:

num - 1个字符已经读入,
碰到一个换行标志,
碰到一个EOF,
或者,任意地读入,直到读到字符delim。delim字符不会被放入buffer中。

这个是eof的原型和解释 还有一个小例子
语法:
bool eof();
如果到达相关联的输入文件的末尾,eof()函数返回true,否则返回false。
例如:
char ch;
ifstream fin( "temp.txt" );
while( !fin.eof() ) {
fin >> ch;
cout << ch;
}
fin.close();



查看完整回答
反对 回复 2022-05-30
?
慕仙森

TA贡献1827条经验 获得超7个赞

1、istream &getline( char *buffer, streamsize num, char delim );
getline()函数用于输入流,读取字符到buffer中,直到下列情况发生:
num - 1个字符已经读入,
碰到一个换行标志,
碰到一个EOF,
或者,任意地读入,直到读到字符delim。delim字符不会被放入buffer中。
2、这eof的原型和解释 :
语法:
  bool eof();
如果到达相关联的输入文件的末尾,eof()函数返回true,否则返回false。
例如:


    char ch;    ifstream fin( "temp.txt" );    while( !fin.eof() ) {      fin >> ch;      cout << ch;    }    fin.close();



查看完整回答
反对 回复 2022-05-30
?
三国纷争

TA贡献1804条经验 获得超7个赞

1、c++示例:


#include<iostream>#include<fstream>using namespace std;int main(){string textline[200];//欲读200行,自己定义 int i=0,ii=0;ifstream fin("d:/test.txt");for(;!fin.eof();)//非文件尾部继续读{    getline(fin,textline[i],'\n');//遇到换行符读一行。    i++;}for(int ii=0;ii<i;ii++)    cout<<textline[ii]<<'\n'; return 0;}

2、eof()读到文件尾部返回真,非文件尾部返回假。

3、getline()按行读取文本。


查看完整回答
反对 回复 2022-05-30
  • 3 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信