C++ 插入到stringstream时出现分段错误

C++ 插入到stringstream时出现分段错误,c++,segmentation-fault,stringstream,C++,Segmentation Fault,Stringstream,我有一个分段错误,但我不使用任何指针。这是在我插入到stringstream时发生的 std::string Relations::toString() { std::stringstream restring; restring << ID << "("; restring << reList[0]; // segmentation fault for (int c = 1; c < reList.size(); c

我有一个分段错误,但我不使用任何指针。这是在我插入到stringstream时发生的

std::string Relations::toString()
{
    std::stringstream restring;
    restring << ID << "(";

    restring << reList[0]; // segmentation fault

    for (int c = 1; c < reList.size(); c++)
    {
        restring << "," << reList[c];
    }

    restring << ")";
    return restring.str();
}
std::字符串关系::toString()
{
标准::串流限制;

重新设置在访问
重新列出[0]
之前,必须检查它是否存在

std::string Relations::toString()
{
    std::stringstream restring;
    restring << ID << "(";

    if (reList.size() > 0)
    {
        restring << reList[0];
        for (std::size_t i = 1; i < reList.size(); ++i)
        {
            restring << "," << reList[i];
        }
    }

    restring << ")";
    return restring.str();
}
std::字符串关系::toString()
{
标准::串流限制;

restring我回答了自己的问题,这让我意识到这是一个愚蠢的问题。我在另一个类中错误地使用了这个类,并且向量中没有任何内容。因此,我试图访问空向量。

首先,如果向量为空,或者只有一个元素,那么会出现明显的崩溃。你不知道在访问
reList[1];
处的第二项之前,似乎要检查
reList
是否有足够的大小。C/C++中的项索引通常从0开始。请显示导致segfault的调用。这也可能是一个错误的
指针。有很多可能性。请确定您的意思是[1]而不是[0]?列表中是否有任何条目。请使用reList.at(x)而不是[x]。您将获得更好的诊断结果