读书人

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

发布时间: 2012-02-19 19:43:37 作者: rapoo

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

程序中间有这样的结构,

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 

读书人网 >C++

热点推荐