我是c ++的新手,并尝试编译简单的c ++程序。使用矢量
#include <iostream>
#include<vector>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#define BUFSIZE 100
using namespace std;
typedef struct AA{
int a;
std::string a_str;
}A;
typedef struct BB{
int b;
std::string b_str;
vector<AA> Aobj;
}B;
int main()
{
B bobj;
bobj.Aobj[0].a=4;
bobj.Aobj[0].a_str="DICOM";
bobj.b_str="LDAP";
bobj.b_str="DICOM";
size_t ipos;
ipos=bobj.Aobj[0].a_str.find("COM");
if(ipos!=string::npos)
cout<<"String Found Successfully....";
else
cout<<"String Not Found ....";
return 0;
}
当我编译程序时,它显示一条错误消息 分段错误(核心转储) 使用Ubuntu OS
答案 0 :(得分:2)
您需要做的是首先创建AA类型的对象,然后将其推送到B的向量
AA aa;
aa.a = 4;
aa.a_str = "hello world";
bobj.Aobj.push_back(aa);
答案 1 :(得分:1)
为B
添加构造函数。此外,C ++不需要像这样的struct typedef。简单地
struct B {
int b;
std::string b_str;
std::vector<A> Aobj;
B() : Aobj(std::vector<A>(1)) {}
};