Reading a file line by line and store it in a vector, process it
本问题已经有最佳答案,请猛点这里访问。
我喜欢读C++中的文本文件。
supoose我有一个sample.txt文件,如下所示:
1 2 3 4 5 | 2 8 5 1 1 1 2 3 4 5 6 4 7 1 2 3 4 |
文件的第一行表示实例数(这里是2个实例)。第二行和第三行是关于第一个指令的信息。第三行和第四行表示第二个实例。下面是我阅读这个文本文件的主要功能。但当我运行它时,它就不工作了。也就是说,阅读过程无法继续。任何人都能帮我。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | int main() { int number; string filePath; int numberOfInstances; int Max; int Rings; cout <<"please input your file path:" ; //ie, D:\\sample.txt cin >> filePath; ifstream fin; fin.open(filePath.c_str()); if(fin.fail()) { cout <<"sorry, fail to open" << endl; exit(1); } fin >> numberOfInstances; vector<int> vect1; for(int i = 0; i < numberOfInstances; i++) { fin >> Rings; fin >> Max; for(i = 0; i < Rings; i++) { fin >> number; vect1.push_back(number); } // //code to process Vect1, eg, sort it // for(i = 0; i < Rings; i++) { vect1.pop_back(); } } fin.close(); return 0; } |
问题是,在所有实例的外部循环和向量元素的内部循环中,都使用相同的变量
要么使用不同的变量,要么使用
1 | for (int i = 0; i < Rings; i++) |
在内环里。
确保修复两个内部循环:一个在开始时读取每个数字并将其推到向量上,另一个在结束时弹出关闭(尽管您可以只使用