我试图从文本文件的特定列(在本例中为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);
}
}
答案 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()
运算符替换>>
。