C++:如何将数据插入到结构成员(位于 Vector 中的结构)

c++: how to insert data to a struct member (struct located in vector)

本文关键字:结构 成员 位于 Vector 插入 数据 C++      更新时间:2023-10-16

正如你在标题中看到的,我正在研究一个结构向量。

其中一个结构成员是字符串字。当我尝试以这种方式向该成员输入数据时:(*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();
    }
}

这可能是相关的代码间隔。

应该说 - 单词和temp_str是字符串类型。iv 是向量的迭代器。

在这种情况下,将数据输入结构成员的正确方法是什么?

您的迭代器可能无效,否则将一个字符串分配给另一个字符串应该不是问题。

一个问题是台词:

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;
}