C++ 使用2d矢量从txt读取文件

C++ 使用2d矢量从txt读取文件,c++,vector,C++,Vector,对于2d向量,是否可以使用运算符[]?例如,我得到了以下代码: vector<vector<string>> data; ifstream myReadFile; myReadFile.open("stoixeia_astheni.txt"); while (!myReadFile.eof()) { for(int i=0; i<1; i++){ for (int j=0; j<4; j++){ myRe

对于2d向量,是否可以使用运算符[]?例如,我得到了以下代码:

vector<vector<string>> data;

ifstream myReadFile;
myReadFile.open("stoixeia_astheni.txt");


while (!myReadFile.eof()) {

    for(int i=0; i<1; i++){
        for (int j=0; j<4; j++){
            myReadFile  >> data[i][j];
        }
    }

}
矢量数据;
ifstreammyreadfile;
myReadFile.open(“stoixeia_-insulfi.txt”);
而(!myReadFile.eof()){
对于(int i=0;i数据[i][j];
}
}
}

我收到的消息超出范围。我有一个5行4列的文件。

您的向量
数据
为空,其
大小()
为0。您必须先
调整它的大小
或使用
推回()
添加新元素:


您是否为向量分配了正确的长度,或者至少将其调整为适当的大小?@Fere您可以有任何数字(我认为是合理的)向量之间的相互关系,但在性能和可读性方面,它有点粗略。+1表示解释得很好的答案和两个显示可能的解决方案的示例。Zeta我试着做一些类似java中的ArrayList的事情。无论如何,感谢非常有用的答案。@Zeta非常低,或不存在?不管怎样,我也给了+1作为补偿y、 在第一个解决方案中不应该是
i<5
while (!myReadFile.eof()) {    
    for(int i = 0; i < 1; i++){
        vector<string> tmpVec;
        string tmpString

        for (int j = 0; j < 4; j++){
            myReadFile  >> tmpString;
            tmpVec.push_back(tmpString);
        }
        data.push_bac(tmpVec);
    }
}
vector<vector<string>> data(5,vector<string>(4));

ifstream myReadFile;
myReadFile.open("stoixeia_astheni.txt");

while (!myReadFile.eof()) {

    for(int i=0; i < 5; i++){
        for (int j=0; j<4; j++){
            myReadFile  >> data[i][j];
        }
    }

}