c++如何一行一行读取文件 50

学校要求编写词法分析器,然后代码如下,不知道为什么只能读第一行,后面的读不了。希望高手帮助一下intmain(){ifstreamfin;//输入文件fin.open("... 学校要求编写词法分析器,然后代码如下,不知道为什么只能读第一行,后面的读不了。希望高手帮助一下

int main()
{
ifstream fin;//输入文件

fin.open("in.txt");
fout.open("out.txt");
fout<<"<?xml version=\"1.0\"?>"<<endl;
fout<<"<root>"<<endl;
string si;

if(fin)
{
int i=0,j=0,ch=0;

while (!fin.eof())
{
getline(fin,si);
j++;
int l=si.length();
while (i<l)
{
ch=1;
judge(si,i,j,ch);
i=i+ch;
}

}
fout<<"</root>"<<endl;
fin.close();
fout.close();
return 0;
}
}
//其中judge(si,i,j,ch)是自己定义的一个读的函数
展开
 我来答
可以叫我表哥
推荐于2016-05-16 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部

//在工程下面建立一个文件 xiaojiba.txt

#include <iostream>

#include<string>

#include<fstream>


using namespace std;


int main()

{


   cout<<"input the filename:"<<endl;

   string filename;

   cin>>filename;

   ifstream infile(filename.c_str());

   string temp;

   while(getline(infile,temp))

   {

   cout<<temp<<endl;

   }

    cout << "Hello world!" << endl;

    return 0;

}

花开伤落
2013-11-07 · TA获得超过118个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:101万
展开全部
没有仔细看 大概扫了下 楼主 while (i<l)
{
ch=1;
judge(si,i,j,ch);
i=i+ch;
}
你while中的i 都会继承上次的值 问题是不是这个啊

另外楼主 你命名注意啊 有点乱
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huinan1988
2013-11-07 · 超过26用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:61万
展开全部
while(fin)
{
fin.getline(buf,50);
}
更多追问追答
追问
不好意思,请问这个函数怎么放在我们main函数里啊
追答

这个函数参 getline(目标变量,读取数量);

这么用 我定义了一个 字符串 buf来保存读取后的 数据。

这样 ,你每执行一次getline  就会把相应的行读到buf中,

字符串的大小(也就是50) 就根据你的需要定了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式