C++文件读取小问题!!!

kuake56 2018-10-26 05:50:57
int main(){
string test="test.txt";
ifstream in(test,ifstream::in);
if(!in){
cout<<"wrong"<<endl;
return -1;
}
vector<string> v;
string line;
while(getline(in,line)){
cout<<line<<endl;
}
return 0;
}
while(getline(in,line)){
cout<<line<<endl;
}
while里面怎么实现的一行一行的读取数据?getline不是遇到回车就结束了吗 那不是第一行读取完了while就结束了,那是怎么读取每一行数据的呢?
...全文
350 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_43001187 2018-11-13
  • 打赏
  • 举报
回复
引用 3 楼 kuake56的回复:
[quote=引用 2 楼 cftxlin 的回复:]
应该是在文件结束时才停止的,不是回车换行


那他是读完一行 下次自动调到下一行吗[/quote] 为了保险可以在中间加一句scanf("/n");,如果读取不到换行符程序不会继续运行
linfengc 2018-10-30
  • 打赏
  • 举报
回复
while(getline(in,line)){ cout<<line<<endl; } ----------这段代码改掉------------- while (!in.eof()) { in.getline(); }
zhouqunhai 2018-10-30
  • 打赏
  • 举报
回复
getline 一次读一行,直到读不到才会返回
棉猴 2018-10-30
  • 打赏
  • 举报
回复
istream& getline (istream&  is, string& str, char delim);

Extracts characters from is and stores them into str until the delimitation character delim is found (or the newline character, '\n', ).
getline()函数从参数is中提取出字符串,并且将这些字符串保存到参数str中。该函数在is流中提取字符串时,遇到指定的定界符delim或者换行字符\n时,会停止提取。
但是,此时只是完成一次提取,while()会继续工作,直到文件被完全读取或者在读取过程中发生错误。
只此冒泡君 2018-10-29
  • 打赏
  • 举报
回复
还有个概念 文件读写位置。 每次调用getline 文件读写位置都会变。 getline读到换行符会结束 但是返回值是判断为true 读到文件结尾 才会返回结果为false
英雄@末路 2018-10-29
  • 打赏
  • 举报
回复
getline 一次读一行,直到读不到才会返回,所以while到文件结束才会退出
老夏 2018-10-27
  • 打赏
  • 举报
回复
getline遇到换行符就完成一次读取,换行符也被读取并丢弃,当前位置就到了换行符后面,也就是所谓下一行
kuake56 2018-10-26
  • 打赏
  • 举报
回复
引用 2 楼 cftxlin 的回复:
应该是在文件结束时才停止的,不是回车换行


那他是读完一行 下次自动调到下一行吗
  • 打赏
  • 举报
回复
应该是在文件结束时才停止的,不是回车换行

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧