使用向量“字符串下标超出范围”错误

时间:2012-12-07 01:52:13

标签: c++ string vector

我试图从文本文件的特定列(在本例中为0)中提取字符,并将它们加载到向量中。代码似乎工作正常,直到它到达结尾,当我得到“字符串下标超出范围”错误,我不知道如何解决这个问题。有谁知道我能做什么?这是相关的代码。

class DTree
{
private:

    fstream newList;
    vector<string> classes;
public:
     DTree();
    ~DTree();

void loadAttributes();
};

void DTree::loadAttributes()
{ 

string line = "";
newList.open("newList.txt");
string attribute = "";
while(newList.good())
{
    getline(newList, line);

    attribute = line[0];
    classes.push_back(attribute);
}
}

2 个答案:

答案 0 :(得分:3)

请尝试'while(getline(newList, line)'

参考here

答案 1 :(得分:0)

您也可以尝试类似

的内容
ifstream ifs("filename",ios::in);

string temp;
getline(ifs,temp)// Called as prime read

while(ifs)
{
    //Do the operations
    // ....

    temp.clear();
    getline(ifs,temp);
}
ifs.clear();
ifs.close();

适用于几乎所有类型的文件。您可以根据自己的要求,通过getline(ifs,temp)函数或get()运算符替换>>