Я пытался прочитать молодые таблицы из файла TXT безрезультатно.
Файл теста, который я создал, выглядит следующим образом
4
1
6 7
2 3 12 14
4 8 16 x
5 9 x x
x x x x
1
13
1 3 5
2 4 7
6 9 14
11 12 x
1
6 7
2 3 12 14
4 8 16 x
5 9 x x
x x x x
1
15
1 3 5
2 4 7
6 9 14
11 12 x
Первое число «4» указывает количество случаев.
Число «1» ниже указывает типдействия, которые будут выполнены в таблице.
Числа ниже - это элементы, которые нужно вставить в молодую таблицу.
Символ 'x' в таблице указывает на отсутствие существующего элемента.
Мой метод состоит в том, чтобы прочитать тип необходимого действия, затем прочитать ключи в векторе и затем прочитать таблицу в двумерном векторе.
Итак, возникает проблема:
#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
vector<vector<int>> tableau;
ifstream file;
string line;
cout << "Hello world!" << endl;
file.open("input.txt");
if(file.is_open())
cout << "success" << endl;
else
cout << "fail" << endl;
int cases;
file >> cases;
while(cases>0)
{
cases--;
int mode;
file >> mode;
cout << "Mode " << mode << endl;
if(mode==1){
vector<int> elements;
getline(file,line);
istringstream token(line);
int key;
while(token >> key){
cout << key << " ";
elements.push_back(key);
}
cout << "\ntableau\n";
while(getline(file,line)){
istringstream token(line);
int element;
vector<int> column;
while(token >> element){
column.push_back(element);
}
tableau.push_back(column);
}
for(vector<int> row:tableau){
for(int x: row){
cout << x << " ";
}
cout << "\n";
}
}
else if(mode==2)
{
while(getline(file,line)){
istringstream token(line);
int element;
vector<int> column;
while(token >> element){
column.push_back(element);
}
tableau.push_back(column);
}
for(vector<int> row:tableau){
for(int x: row){
cout << x << " ";
}
cout << "\n";
}
cout << "Mode 2\n";
}
else
cout << "Wrong Mode\n";
}
return 0;
}
Я пытаюсь читать ключи, которые мне нужно вставить, и таблицу отдельно.
Однако используемые мной методы, кажется, просто читаютВместо этого весь файл, который приводит к действительно странным результатам. Код выведет весь файл четыре раза, и «x» просто исчезнет. Я даже не могу начать реализацию функции вставки и извлечения-минут, так как не могу даже прочитать таблицу правильноЯ неправильно использую istringstream? Или istringstream просто не подходит для такого рода проблем?