读取.txt文件并将每行放入向量中

时间:2018-03-27 01:17:27

标签: c++ string class vector

我很难弄清楚这是如何运作的

我的说明如下: 文件中的一行(作为字符串输入)进入一个字符串向量。因此,如果文件有25行,您将在(输入后)最终得到25个字符串向量,每个字符串包含一个字符串。然后,您开始将矢量对连接到更大的矢量,直到只有一个矢量包含所有字符串。 我的问题是如何读取文件并为每行创建一个向量,因为该数字始终不同?

2 个答案:

答案 0 :(得分:0)

你应该创建一个矢量矢量。这样,您可以使用索引引用每个单独的向量。

How do you create vectors with different names in a for loop

答案 1 :(得分:0)

由于向量是动态的,并且不需要像数组一样具有固定大小,因此您可以简单地创建向量向量以存储文件的所有行。如果你的文件有25行,那么将会有一个向量,其中包含25个字符串向量。请参阅下面的示例代码。

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

/*
There is a file (sample.txt) created for this example that contains the following contents:

hello world
this is a long line of words
while
this
is
a
short
line
of
words

*/

int main(int argc, char*argv[])
{
    ifstream file_To_Read(argv[1]);            //Creating an ifstream that opens a file from a command line argument

    vector< vector<string> > complete_Vector;  //This is a single vector that will contain multiple vectors

    string line;                               //String used to store file contents a line at a time
    vector<string> tempVec;                    //Vector that will contain the singular line
    while(getline(file_To_Read, line))         //While you can read the file's content a line at a time, place its content into line
    {
        tempVec.push_back(line);
        complete_Vector.push_back(tempVec);
    }

    //The sample file has 10 lines, so complete_Vector.size() should be 10 (10 vectors are in it)
      return 0;
}