簡體   English   中英

C ++:如何將數據插入struct成員(位於vector中的struct)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM