[英]c++: how to insert data to a struct member (struct located in vector)
正如您在标题中看到的那样,我正在研究结构的向量。
结构成员之一是字符串 。 当我尝试以这种方式向该成员输入数据时: (* iv).word = temp_str; ,出现运行时错误。
while (is!=str1.end())
{
if (((*is)!='-')&&((*is)!='.')&&((*is)!=',')&&((*is)!=';')&&((*is)!='?')&&((*is)!='!')&&((*is)!=':'))
{
temp_str.push_back(*is);
++is;
}
else
{
(*iv).word=temp_str;
++iv;
str1.erase(is);
temp_str.clear();
}
}
这可能是相关的代码间隔。
应该说-word和temp_str是字符串类型。 iv是向量的迭代器。
在这种情况下,将数据输入到struct成员的正确方法是什么?
您的迭代器可能无效,否则将一个字符串分配给另一个字符串应该不是问题。
问题是该行:
str1.erase(is);
这将作废is
,你应该将其更改为:
is = str1.erase(is);
iv
指向什么? 似乎您需要添加类似以下内容:
while (is!=str1.end() && iv != something.end())
也一样
我想这与迭代器或为向量分配空间有关。 这是应该工作的
#define N 10
struct myStruct
{
int a;
std::string str;
};
int main()
{
std::vector<myStruct> myVector;
myVector.resize(N);
std::vector<myStruct>::iterator itr;
for (itr = myVector.begin(); itr != myVector.end(); ++itr)
{
std::string tmp = getString();
itr->str = tmp;
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.