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

学校要求编写词法分析器,然后代码如下,不知道为什么只能读第一行,后面的读不了。希望高手帮助一下

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)是自己定义的一个读的函数

//在工程下面建立一个文件 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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-07
没有仔细看 大概扫了下 楼主 while (i<l)
{
ch=1;
judge(si,i,j,ch);
i=i+ch;
}
你while中的i 都会继承上次的值 问题是不是这个啊

另外楼主 你命名注意啊 有点乱本回答被网友采纳
第2个回答  2013-11-07
while(fin)
{
fin.getline(buf,50);
}追问

不好意思,请问这个函数怎么放在我们main函数里啊

追答

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

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

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

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

追问

嗯不好意思,我着您的改了,可是连第一行也输出不了了。。。方便留一下邮箱么,我把所有的程序都写上

追答

三四五一九零零四二

方便的话,把你程序和 需要读的文件也发吧

追问

您好,您看了一下out文件的输出了吗,我这里输出是

追答

恩。 我也看到了。
但是 我刚刚 看了下 读取文件的部分没有问题。
至于你自己的那个函数我就没有细看,所以没能判断结果是否是你要的。。

相似回答