[英]Using content of members of a Struct in a vector
经过出色的建议,我定义了一个结构,用从文件中读取的数据填充该结构并将其压入向量。 尼斯! 现在有人可以告诉我如何调用在向量上推入的第i个结构的成员的内容吗?
结构定义:
struct Config_Data
{
int Surf_Index;
std::string Surf_Mnemo;
double Surf_Param[5];
std::string Surf_Comm;
};
结构的实例化和向量的定义:
Config_Data SURF;
std::vector<Config_Data> CDATA_SURF;
填充结构:
for (i=1;i<=10;i++)
{
getline(INP_Stream, Line, delim_Config);
SURF.Surf_Index=atoi(Line.c_str());
getline(INP_Stream,SURF.Surf_Mnemo,delim_Config);
SURF.Surf_Param[0]=Mnemo_list[SURF.Surf_Mnemo];
for (j=1;j<=Mnemo_list[SURF.Surf_Mnemo];j++)
{
getline(INP_Stream,Line,delim_Config);
SURF.Surf_Param[j]=strtod(Line.c_str(),NULL);
}
getline(INP_Stream, SURF.Surf_Comm,delim_Line);
CDATA_SURF.push_back(SURF);
cout<<CDATA_SURF.size()<<endl;
string aaa=CDATA_SURF[i].Surf_Comm;
}
如您所见,我从csv文件读取了字符串。 我对在int或double类型中转换字符串的方式并不满意,但它似乎有效。
我想在向量及其成员Surf_Comm中调用第i个结构的方式:
std::string aaa=CDATA_SURF[i].Surf_Comm;
我编译没有问题,但是在运行时我收到了段违规信号。 作为一个初学者,我不知道发生了什么。
所有帮助都非常欢迎!!!
提前致谢,
问候,
斯特凡
无论i
的值是i
,它都必须在std::vector
。 也就是说,你必须已经把至少i
+1项目中std::vector
。
std::vector
元素计数从零值开始。 因此,如果vector拥有一个元素,则该值的索引为0。在两个值的情况下-0和1,依此类推。 不要被size()
向量方法所迷惑。 它返回许多保持元素。
因此,新推入的值的索引等于size()-1
。 访问第i个元素(不存在)会导致错误。
如果将循环中的i
值范围更改为for( i = 0; i < 10; i++ )
则此代码应该可以工作。
只能重申:在这种情况下,您要在for循环中推回一个空向量,并使用i
访问同一循环中的数据,因此必须将其更改为for(i=0; i<10; i++)
。
不然你就是
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.