Как вы читаете символы из входного файла и сохраняете их в вектор? - PullRequest
0 голосов
/ 27 сентября 2019

Прежде всего, вот входной файл:

0 a   a b c 

0 b   d e f 

1 c   g h i 

1 d   j k l 

Мы пытаемся прочитать из входного файла и сохранить получаемые символы в вектор, а затем сохранить его в 2D-таблице с именем T.Мы запустили начальный цикл while, поэтому он захватывает первый столбец и выводит «abcd», но мы не можем заставить его вернуться через цикл while или for, чтобы получить другие строки и столбцы.Вот что мы имеем:

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 голосов
/ 27 сентября 2019

РЕДАКТИРОВАТЬ: Как отмечали другие, мое требование не было правильным.Я оставляю этот ответ здесь на тот случай, если другие могут иметь то же недоразумение, что и я.


Линия

while (fin >> row)

выглядит неправильно.Оператор istream::operator >> возвращает сам поток, поэтому ваш цикл while будет продолжаться вечно.

Чтобы исправить это, вы должны добавить что-то вроде if (fin.eof()), чтобы определить конец файла.См. Например здесь или там для получения подробной информации и примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...