C ++:如何插入数据到一个结构构件(结构位于载体)(c++: how to insert data

2019-10-16 14:34发布

因为你可以在标题看到的,我的工作结构的载体。

该结构成员之一,是串词 。 当我试图将数据输入到该构件以这种方式:(*ⅳ).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是一个迭代中的载体。

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

Answer 1:

你的迭代器可能是无效的,否则它不应该是分配一个串到另一个问题。

一个问题是行:

str1.erase(is);

这将作废is ,你应该将其更改为:

is = str1.erase(is);

什么iv点在哪里? 好像你需要添加类似:

while (is!=str1.end() && iv != something.end())

为好。



Answer 2:

我猜它是与迭代器或分配空间向量的一个问题。 下面是应该工作

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


文章来源: c++: how to insert data to a struct member (struct located in vector)