зависание программы из-за getline

Я читаю ввод из файла. Я знаю его формат. Поэтому я хотел бы прочитать входные данные из файла и сохранить его. Я пытаюсь использовать getline для чтения в последней строке, но программа просто зависает. Это мои данные входного файла:

6
1 2 2 -4 45 32
123 4234 -234 34534 54 2344
1 2 2 3 4 -234
2 3 -4 -4 4 234
1 11 123 1234 -12334563 2342
2 -234 -23 23 4322 2342
op 2

Первое значение во входном файле указывает количество строк / столбцов, которое имеет квадратная матрица. Тогда у вас есть сама квадратная матрица. Наконец, у вас есть код операции.

Это мой код:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>

using namespace std;

int main()
{
int i,j,matlim;
int num;
string matrixlimit;
string inputfile;
string operation;
ifstream data;
vector< vector<int> > mat1storage,mat2storage;

cout<<"Please enter an input file name: ";
cin>>inputfile;

data.open(inputfile.c_str());
if(data.is_open())
{
data >> matlim;
while(!data.eof())
{
for(i = 0;i<matlim;i++)
{
vector<int> mat1row;
for (j = 0;j<matlim;j++)
{
data >> num;
mat1row.push_back(num);
}
mat1storage.push_back(mat1row);
}

getline(data,operation);
cout << operation;

}
}
data.close();
}

Когда я выполняю простую «операцию обработки данных» в цикле, чтобы прочитать последнюю строку из файла, программа работает без проблем. Но когда я пытаюсь использовать getline, это не работает … Что я делаю не так? Спасибо.

0

Решение

Getline считывает данные и сохраняет их в строку, пока не будет найден символ исключения.

Символ исключения \n

Вставьте пустой символ новой строки после op 2 в тебе текстовый файл и он должен работать

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector