结构体向量 push_back()的问题

gxy0451 2009-09-11 04:36:26
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <stdio.h>
using namespace std;
struct data{
string aa,bb,cc;
};
int fileToVector(string fileName,vector<string>&svec){
ifstream inFile(fileName.c_str());
if(!inFile)
return 1;
string s;
while (getline(inFile,s))
svec.push_back(s);
inFile.close();
}
int main (){
vector <string>svec;
vector<int>::size_type ix=0;
string fileName,s;
fileName=a.txt;
vector <data> a;
istringstream isstream;
isstream.str(svec[ix]);
a.aa.push_back (isstream);
a.bb.push_back (isstream);
a.cc.push_back (isstream);
isstream.clear();
return 0;
}
请教各位高手,这是一个读取txt文件的程序,将文件按行读取,将每行里的string分别存入一个变量。这个变量是通过结构体向量建立的。可是现在这个程序编译出现错误,显示:error C2039: “aa”: 不是“std::vector<_Ty>”的成员。希望有高手能回答,谢谢!
...全文
913 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxy0451 2009-09-11
  • 打赏
  • 举报
回复
多谢多谢!
liao05050075 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gxy0451 的回复:]
感谢2楼liao05050075,再弱弱问一下,怎么把a[0]中三个元素输出啊?
[/Quote]
直接输出就可以了
cout<<a[0].aa<<a[0].bb<<a[0].cc;
gxy0451 2009-09-11
  • 打赏
  • 举报
回复
感谢2楼liao05050075,再弱弱问一下,怎么把a[0]中三个元素输出啊?
mstlq 2009-09-11
  • 打赏
  • 举报
回复
既然是结构体vector,请push_back结构体……

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <stdio.h>

using namespace std;

struct data
{
string aa,bb,cc;
};

int fileToVector(string fileName,vector <string>&svec)
{
ifstream inFile(fileName.c_str());

if (!inFile)
return 1;

string s;

while (getline(inFile,s))
svec.push_back(s);

inFile.close();
}

int main()
{
vector <string>svec;
vector <int>::size_type ix=0;
string fileName,s;
fileName="a.txt";
vector <data> a;
istringstream isstream;
isstream.str(svec[ix]);
data tmp;
isstream>>tmp.aa;
isstream>>tmp.bb;
isstream>>tmp.cc;
a.push_back(tmp);
isstream.clear();
return 0;
}
beyond071 2009-09-11
  • 打赏
  • 举报
回复
楼主应该好好的把C++ PRIMER中序列容器那块看看 用法有点夸张哈
sunnywyg 2009-09-11
  • 打赏
  • 举报
回复
你这程序怎么也编不过吧...?改清楚了再问
candeabc123 2009-09-11
  • 打赏
  • 举报
回复
晕死
a.aa.push_back (isstream);
明显是语法错了 aa成员不是一个vector容器 不能引用push_back函数

建议先构造一个data结构对象 然后把对象push_back到a中即可
例如:
data strData;
strData.aa = isstream;
strData.bb = isstream;
strData.cc = isstream;

aa.push_back(strData);
..
liao05050075 2009-09-11
  • 打赏
  • 举报
回复
int main (){
vector <string>svec;
vector <int>::size_type ix=0;
string fileName,s;
fileName=a.txt;
vector <data> a;
istringstream isstream;
isstream.str(svec[ix]);
struct data tmp;
isstream>>tmp.aa ;
isstream>>tmp.bb;
isstream>>tmp.cc;
a.push_back(tmp);
isstream.clear();
return 0;
}
OenAuth.Core 2009-09-11
  • 打赏
  • 举报
回复
可以用iterator

如:vector<data>::iterator p = a.begin();

//把p移到你想要的位置

(*p).aa.pushback(..); //下同

65,202

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧