如何从输入文件中读取字符并将其存储到向量中?

时间:2019-09-27 01:55:23

标签: c++ visual-studio computer-science

首先是输入文件:

0 a   a b c 

0 b   d e f 

1 c   g h i 

1 d   j k l 

我们正试图从输入文件中读取并将接收到的字符存储到向量中,然后从那里将其存储到名为T的2D表中。我们得到了初始的while循环,因此它抓住了第一列并输出“ a b c d”,但是我们无法让它返回到whilefor循环中来抓住其他行和列。这是到目前为止的内容:

int readTable() {
  int row, col;  // row and col numbers
  char col_c;    // column indicator
  ifstream fin("C:\\Users\\name\\OneDrive\\Desktop\\lines.txt", ios::in);

  // Read in the file into T
  while (fin >> row)  // next line of file
  {
    fin >> col_c;
    col = convert(col_c);  // convert to a slot number
    vector<char> v;        // a vector to fill
    char c;                // one char from the file
    // ** Fill v with chars from the file (there are VM chars)
    for (int i = 0; i < VM; i++) {
      fin >> c;
      v.push_back(c);
    }
    // ** Put  v in T[row][col]
    T[row][col] = v;

  }  // end of while

convert函数仅将'a'转换为0,将'b'转换为1,将'c'转换为2,以使我们可以将向量放置在T中的适当位置。 **的任何地方都应该是我们编辑和修改的部分。

1 个答案:

答案 0 :(得分:-1)

编辑:     正如其他人指出的那样,我的主张是不正确的。如果其他人可能有与我相同的误解,我将在此处保留此答案。


while (fin >> row)

看起来不对。运算符istream::operator >>会返回流本身,因此您的while循环将永远继续。

要修复该问题,您应该添加if (fin.eof())之类的内容以检测文件结尾。参见例如herethere了解详细信息和示例。