首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何从文件中读这样的数据

2012-02-19 
怎么从文件中读这样的数据 ?我的问题是:程序中间有这样的结构,struct student{int id,string namestring

怎么从文件中读这样的数据 ?
我的问题是:

程序中间有这样的结构, 

struct student
{
  int id,
  string name;
  string hometown;
  int score;
};

自己写入文件:

1,"小明","北京",620
2,"小李","南京",630
......

我存到文件中以后,想找一个合适的方法读到一个vector中 ?
谢谢。
 

[解决办法]
用fscanf可以格式化读取的.
[解决办法]

C/C++ code
#include    <iostream>#include    <vector>#include    <string>#include    <fstream>#include    <cstdlib>using namespace std; struct student { public:    int id;    string name;     string hometown;     int score; }; void    GetData(const char* str, student& stu){    char buffer[128];    const char *beg, *end;    int i;    beg = str, end = str;        while (*end!=',') end++;    for (i = 0; beg!=end; buffer[i++] = *beg++);    buffer[i] = 0;    stu.id = atol(buffer);    while (*end++!='\"');    beg = end;    while (*end++!='\"');    for (i = 0; beg!=end; buffer[i++] = *beg++);    buffer[i-1] = 0;    stu.name = buffer;    while (*end++!='\"');    beg = end;    while (*end++!='\"');    for (i = 0; beg!=end; buffer[i++] = *beg++);    buffer[i-1] = 0;    stu.hometown = buffer;        while (*end++!=',');    beg = end;    for (i = 0; *beg; buffer[i++] = *beg++);    buffer[i] = 0;    stu.score = atol(buffer);}int main(int argc, char* argv[]) {     char buffer[1024];    vector<student> result;    fstream fin("data.txt", ios::in);    while (!fin.eof()&&fin.getline(buffer, 1024))    {        student t;        GetData(buffer, t);        result.push_back(t);    }    for (int i = 0; i < result.size(); ++i)    {        cout << result[i].id << '\t'             << result[i].name << '\t'            << result[i].hometown << '\t'            << result[i].score << endl;    }    fin.close();    return 0; }1       小明    北京    6202       小李    南京    630Press any key to continue 

热点排行