Не работает reinterpret_cast. Мне нужно перевести два числа из файла в int, чтобы применить функцию, но последнего не выходит как раз таки. Числа на экран выводятся (в цикле), после с ними ничего не происходит. Как исправить? Срочно необходимо. Заранее спасибо!
#include <fstream>
using namespace std;
class MyList {
public:
struct Node { //структура узла
int value; //значение в узле
Node* next; //указатель на следующий узел
};
MyList() {
start = nullptr; //изначально список пустой, поэтому начальный и последний узлы заданы пустыми
last = nullptr;
}
void Push(int val) { //функция, добавляющая элемент в конец списка
if (start == nullptr) {
start = new Node{val, nullptr};
last = start;
} else {
last->next = new Node{val, nullptr};
last = last->next;
}
}
Node* Begin() { //метод, возвращающий указатель на начало списка, т.к. указатель на начальный узел под модификатором private
return start;
}
void Print() { //функция печати данных в консоль
auto start = Begin();
while (start != nullptr) {
cout << start->value << " ";
start = start->next;
}
cout << '\n';
}
void ListSwap(int a, int b) { //функция поиска элементов с и замены их значений
auto it_a = Begin();
for (int i = 0; i < a; ++i) {
it_a = it_a->next;
}
auto it_b = Begin();
for (int i = 0; i < b; ++i) {
it_b = it_b->next;
}
int temp = it_a->value;
it_a->value = it_b->value;
it_b->value = temp;
}
private:
Node* start; //указатель на начальный узел
Node* last; //указатель на последний узел
};
int main() {
MyList my_list;
my_list.Push(1);
my_list.Push(2);
my_list.Push(3);
my_list.Push(4);
my_list.Push(5);
my_list.Print();
int a, b;
ifstream inf("input.txt"); // чтение файла
if (!inf)
{
cerr << "Uh oh, input.txt could not be opened for reading!" << endl;
cin >> a >> b;
}
char buff[8][8];
while (inf)
{
int i=0;
while( !inf.eof() ) { // цикл, который существует пока не закончится файл
inf.getline(buff[i],sizeof(buff)); // запись в buff строчки i файла
cout << buff[i];
}
i++;
}
inf.close();
while(!(cin>>a) || !(cin>>b))
{
cin.clear();
while(cin.get()!='\n')
continue;
cout<<"Input error!";
}
int c = reinterpret_cast<int>(buff[0]);
int d = reinterpret_cast<int>(buff[1]);
cout<< c << " " << d;
if(!a || !b) {
my_list.ListSwap(c, d);
}
else {
my_list.ListSwap(a, b);
}
my_list.Print();
}