Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;:如何向结构成员(位于vector中的结构)插入数据_C++_String_Vector_Struct - Fatal编程技术网

C++ c++;:如何向结构成员(位于vector中的结构)插入数据

C++ c++;:如何向结构成员(位于vector中的结构)插入数据,c++,string,vector,struct,C++,String,Vector,Struct,正如你在标题中看到的,我正在研究结构的向量 其中一个结构成员是字符串word。 当我试图以这种方式向该成员输入数据时:(*iv).word=temp\u str,我得到一个运行时错误 while (is!=str1.end()) { if (((*is)!='-')&&((*is)!='.')&&((*is)!=',')&&((*is)!=';')&&((*is)!='?')&&((*is)!='!')&am

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

其中一个结构成员是字符串word。 当我试图以这种方式向该成员输入数据时:(*iv).word=temp\u 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是向量的迭代器


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

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

一个问题是线路:

str1.erase(is);
这将使
is
无效,您可能应该将其更改为:

is = str1.erase(is);
iv
指向什么?似乎您需要添加以下内容:

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

同样。

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

一个问题是线路:

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;
}
#定义N 10
结构myStruct
{
INTA;
std::字符串str;
};
int main()
{
std::vector myVector;
myVector.resize(N);
std::vector::迭代器itr;
对于(itr=myVector.begin();itr!=myVector.end();++itr)
{
std::string tmp=getString();
itr->str=tmp;
}
返回0;
}

我想这是迭代器或为向量分配空间的问题。这是应该起作用的

#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;
}
#定义N 10
结构myStruct
{
INTA;
std::字符串str;
};
int main()
{
std::vector myVector;
myVector.resize(N);
std::vector::迭代器itr;
对于(itr=myVector.begin();itr!=myVector.end();++itr)
{
std::string tmp=getString();
itr->str=tmp;
}
返回0;
}

在指定温度的地方发布一些代码,您如何初始化向量?如何迭代向量?请提供相关代码snippets@iammilind,没有人对出生在非英语国家负责。
iv->word
*(iv)相同。word
,但更容易阅读/键入。–1,错误描述完全不足。最少的代码丢失。错误消息丢失。在分配临时值的地方发布一些代码。如何初始化向量?如何迭代向量?请提供相关代码snippets@iammilind,没有人对出生在非英语国家负责。
iv->word
*(iv)相同。word
,但更容易阅读/键入。–1,错误描述完全不足。最少的代码丢失。错误消息丢失。当向量大小未知时,您的解决方案是什么?嗯,这取决于您想做什么。。您可以在循环中使用vector的push_back方法,直到得到一个空字符串或某个表示您已完成的内容。当向量大小未知时,您的解决方案是什么?嗯,这实际上取决于您想做什么。。您可以在循环中使用vector的push_back方法,直到得到一个空字符串或表示您已经完成的内容。