读文本文件第一行有误,其他行正常

xinustc 2008-10-07 04:46:28
我希望把文本里存的数据读入然后转换成int型处理,可是结果第一行转换后总是0
不知道错在哪里,恳请各位指教。 程序如果有其他更好的实现方法也希望各位不吝赐教

程序如下:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string>

using namespace std;
class _mydata
{
public: int num; //
int data;

}pub[5];
void main()
{
int i=0;
string number,stringdata;
ifstream in;
char line[1024];
char * a, *b;

in.open("read",ios::in);
if(in.is_open())
{
while(!in.eof())
{
in.getline(line,1024);

in >> number ;
in >> stringdata;
i++;
a=&number[0];
b=&stringdata[0];
pub[i].num=atoi(a);
pub[i].data=atoi(b);

}
}
for (i=0;i<4;i++)
{

cout << pub[i].num <<"\t"<<"第"<<i<< "行" <<endl;
}


}

文件内容:

3 89
7984 65
369 45
136 5

程序结果:
0 第一行
7984 第二行
369 第三行
136 第四行
...全文
132 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinustc 2008-10-08
  • 打赏
  • 举报
回复
非常感谢zclever 但是我还是不明白原来的程序错在哪里了,如果错误为什么只有第一行有错?
zclever 2008-10-07
  • 打赏
  • 举报
回复

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string>

using namespace std;
class _mydata
{
public:
int num; //
int data;
}pub[5];

int main()
{
int i=0;
string number,stringdata;
ifstream in;
char line[1024];
char * a, *b;
char *p=" ";
in.open("read.txt",ios::in);
if(in.is_open())
{
while(!in.eof())
{
in.getline(line,1024);
/*in >> number ;
in >> stringdata;
i++;
a=&number[0];
b=&stringdata[0]; */
a=strtok(line,p);
pub[i].num=atoi(a);
b=strtok(NULL,p);
pub[i].data=atoi(b);
i++;
}
}
in.close();
for (i=0;i <4;i++)
{
cout << pub[i].num <<" "<<pub[i].data<<"\t" <<"第" <<i << "行" <<endl;
}
return 0;
}

65,211

社区成员

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

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