如何用C++从txt中读取数据到结构体?
例如,A.txt有如下数据:01张成成男50187732111------------------------------------------------------...
例如,
A.txt 有如下数据:
01 张成成 男 501 87732111
--------------------------------------------------------------------------------------------
对于A.txt,
我用的结构体student里面的数据类型是:
int string string int int int int
代码如下:
student std;
ifstream fin("A.txt");
fin>>stu.sno >>stu.name >>stu.sex >>stu.room >>stu.tel;
我目前只会这一种,
但如果真这样, 在第二个数据到第三个数据的地方就会赋错,
我知道getline是以空格为分隔符,
但如果用上getline, 我就不知道要怎么办了...
--------------------------------------------------------------------------------------------
求助, 最好是能有代码... 展开
A.txt 有如下数据:
01 张成成 男 501 87732111
--------------------------------------------------------------------------------------------
对于A.txt,
我用的结构体student里面的数据类型是:
int string string int int int int
代码如下:
student std;
ifstream fin("A.txt");
fin>>stu.sno >>stu.name >>stu.sex >>stu.room >>stu.tel;
我目前只会这一种,
但如果真这样, 在第二个数据到第三个数据的地方就会赋错,
我知道getline是以空格为分隔符,
但如果用上getline, 我就不知道要怎么办了...
--------------------------------------------------------------------------------------------
求助, 最好是能有代码... 展开
2个回答
展开全部
你这数据最好是由程序代码格式化地生成,然后你才能用相同的数据格式去读。
你要是用手动生成的话,以这样的方式去赋值不出错才怪。
string的长度你知道?
你可以定义如下的数据格式
typedef struct _PROPERTY
{
char szName[32];
char szSex[4];
} PROPERTY;
typedef struct _STUDENT
{
int index;
PROPERTY pro;
unsigned int RoomNum;
char szStuNum[16];
} STUDENT;
然后你用这个结构去产生A.txt文件。再用这个结构读取就不会出错。一次读取sizeof(STUDENT)长度的数据。
如果你的数据是手工生成的,那么你只能通过判断是不是空格来进行赋值。
getline之后,取得一行,那么就判断哪个字符不是空格,然后按照设置的规则进行手动赋值就可以了。这个也不难实现。用两个指针加上几个char和int互转的函数就可以实现。
你要是用手动生成的话,以这样的方式去赋值不出错才怪。
string的长度你知道?
你可以定义如下的数据格式
typedef struct _PROPERTY
{
char szName[32];
char szSex[4];
} PROPERTY;
typedef struct _STUDENT
{
int index;
PROPERTY pro;
unsigned int RoomNum;
char szStuNum[16];
} STUDENT;
然后你用这个结构去产生A.txt文件。再用这个结构读取就不会出错。一次读取sizeof(STUDENT)长度的数据。
如果你的数据是手工生成的,那么你只能通过判断是不是空格来进行赋值。
getline之后,取得一行,那么就判断哪个字符不是空格,然后按照设置的规则进行手动赋值就可以了。这个也不难实现。用两个指针加上几个char和int互转的函数就可以实现。
本回答被提问者采纳
展开全部
不明确 A.text是什么样子?
01 张成成 男 501 87732111
02 张成 男 501 87732111
还是
01 张成成 男 501 87732111
--------------------------------------------------------------------------------------------
02 张成 男 501 87732111
01 张成成 男 501 87732111
02 张成 男 501 87732111
还是
01 张成成 男 501 87732111
--------------------------------------------------------------------------------------------
02 张成 男 501 87732111
追问
没有“------------”
那个是我自己加的。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询