将文件内容读入结构体问题?

yikun 2006-05-31 09:24:55
我有一个配置文件。以字符的形式存在,字符间用空格隔开。存放顺序如下:
GZ_MT 100.100.100.1 5600 0
GD_MT 100.100.100.2 5600 0
每行用回车.
我要把他们分别读入到一个结构体.
struct CMsCfg
{
char m_acAccountNo[20];
char m_acIP[64];
int m_iPort;
int m_iRegStat;
};

请问最好的方法是?谢谢.

...全文
207 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjzhaoxiao 2006-05-31
  • 打赏
  • 举报
回复
/*
GZ_MT 100.100.100.1 5600 0
GD_MT 100.100.100.2 5600 0
每行用回车.
我要把他们分别读入到一个结构体.
struct CMsCfg
{
char m_acAccountNo[20];
char m_acIP[64];
int m_iPort;
int m_iRegStat;
};
*/

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

typedef struct CMsCfg
{
char m_acAccountNo[20];
char m_acIP[64];
int m_iPort;
int m_iRegStat;
}v_CMsCfg_t;

int main(int argc, char** argv)
{
v_CMsCfg_t cmsCfg;

string strAccountNo;
string strIP;
int nPort;
int nRegStat;
ifstream fin("C:\\test.txt");
while(!fin.eof())
{
fin>>strAccountNo>>strIP>>nPort>>nRegStat;
cout<<strAccountNo<<" "<<strIP<<" "<<nPort<<" "<<nRegStat<<" "<<endl;

}
return 0;
}
铖邑 2006-05-31
  • 打赏
  • 举报
回复
象这样的结构可以考虑用二进制存储 读取
struct CMsCfg abc;
写:
fwrite(&abc, sizeof(struct CMsCfg), 1, fp);
读:
fread(&abc, sizeof(struct CMsCfg), 1, fp);
铖邑 2006-05-31
  • 打赏
  • 举报
回复
struct CMsCfg abc;
fscanf(fp, "%s %s %d %d", abc.m_acAccountNo, abc.m_acIP, abc.m_iPort, abc.m_iRegStat);
healer_kx 2006-05-31
  • 打赏
  • 举报
回复
没有快的方式了。就读到一行,然后分割空格前后的每一项,然后赋值呗。
你的格式没有办法快啊。。。
jixingzhong 2006-05-31
  • 打赏
  • 举报
回复
不过如果文件产生的时候不是用的 fwrite 写成的 2进制文件,
fread 时候可能会出错 ...

这样就只用使用 fscanf;
或者用 ifstream 慢慢读取 ...
jixingzhong 2006-05-31
  • 打赏
  • 举报
回复
用 C 方式的 fread 块读取刚刚好 ....

64,282

社区成员

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

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