怎么从文件中读这样的数据 ?
我的问题是:
程序中间有这样的结构,
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