C++:如何将文件中的内容读入含有向量的类中

include<iostream>#include<vector#include<fstream>usingnamespacestd;classa{public:frie... include<iostream>
#include<vector
#include<fstream>
using namespace std;
class a
{
public:
friend istream& operator>>(istream& in,a& obj) ;
friend ostream& operator<<(ostream& out,a& obj);
vector<int>& returnvector()
{ vector<int>& it=b;
return it;
}
private:
vector<int> b;
string str;
};
istream& operator>>(istream& in,a& obj)
{ in>>obj.str;
int tem=0;
while(in>>tem)

obj.returnvector().push_back(tem);

return in;
}
ostream& operator<<(ostream& out,a& obj)
{
cout<<"string:"<<endl;
cout<<obj.str<<endl;
cout<<"vector:"<<endl;
for(vector<int>::iterator iter=obj.returnvector().begin(); iter!=obj.returnvector().end();iter++)
cout<<*iter<<endl;
return out;
}
int main()
{
ifstream i("D:\\show.txt");
vector<a> mama;
a obj;
while( i>>obj)
{ mama.push_back(obj); }
for(vector<a>::iterator iter=mama.begin(); iter!=mama.end();iter++)
cout<<*iter<<endl;

}
文件里面有asd 1 2 3 4
ccvv 2 3 4 5
qq 6 7
我这个程序只能读第一行,因为读完所有整数后,in已经无效了,只执行了一次while循环就退出了,那能不能,有没有别的方法将文件中的内容读入到一个含有向量的类中(类中还有其它成员),希望大家能帮我想想办法,感激涕零哇!
展开
 我来答
abcd1236386
推荐于2016-03-03 · TA获得超过774个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:532万
展开全部
你这个是因为你程序写的不对。
你在operator>>函数里读取数字的时候,用了while读,这样他读到下一行的ccvv的时候,不是int类型的,所以导致in流的失效,所以你看到的效果就是读取了一行,其实是读下面的是没发读了,他可不会读到一行的结尾就自动停止。所以你要解决的就是如何然程序读到一行自动停止,一种办法就是你知道每一行有多少个数字,然后你就读多少次,这个可以再加一个参数,在每个str的后面加上数字的个数。要不然你就一次读一行,用getline来读,这样读取的一行是一个整个字符串,你需要自己去解析这个字符串,分解出str跟各个数字。两种方法你自己选一个吧。
百度网友96ffcf7
推荐于2016-09-19 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22719 获赞数:118727
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
ifstream in1("电话簿.txt");
if(!in)
{
cout<<"无法打开文件."<<endl;
return 1;
}
while(in)
{
char a=in.getline(str,99);//把文件中的字符串读到名为str的数组中,99为该数组的规格
if(in)
cout<<a;
}
in1.close;
return 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式