Проблемы с getline при работе с файлами и хэшированием ( по алгоритму MD5)
#include <iostream>
#include "md5.h"
#include <string>
#include <fstream>
using namespace std;
void menu()
{
string info[3];
info[0] = "Внести данные в командную строку : 0";
info[1] = "Создать файл и внести в него данные : 1";
info[2] = "Внести данные с файла : 2";
for (string i : info)
{
cout << i << endl;
}
}
int action()
{
int var;
cout << endl << "Выберите действие которое вам нужно : ";
cin >> var;
while (1)
{
switch (var)
{
case 0:
{
string information;
getline(cin, information);
cout << "*Hash of the encrypted inf* : " << md5(information) << endl;
}break;
case 1:
{
ofstream fout;
fout.open("firsthash.txt");
if (!fout.is_open())
{
cout << "File can not be open";
}
else
{
string inf;
getline(cin, inf);
fout << inf;
}
fout.close();
}break;
case 2:
{
ifstream fin;
fin.open("firsthash.txt");
if (!fin.is_open())
{
cout << "File can not be open";
}
else
{
string inf;
while (!fin.eof())
{
getline(fin, inf);
cout << md5(inf) << endl;
}
}
fin.close();
}break;
case 3:
{
return 0;
}break;
default:
{
cout << "Error..." << endl;
}break;
}
}
}
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "Russian");
menu();
action();
return 0;
}
( Первый раз здесь, так что прошу прощения за "топорность" задания вопросов и описания проблем ) Опишу проблемы с которыми столкнулся : Пункт 0 При выборе действия 0 т.е. "ввести данные вручную в командной строке и захэшировать их", после выбора самого действия т.е. ввода 0 выводится абсолютно непонятное мне хэш значение, после вывода этого неидентифицированного хэш значения код касательно этого действия работает корректно. ( Внести данные в командную строку : 0 Создать файл и внести в него данные : 1 Внести данные с файла : 2
Выберите действие которое вам нужно : 0 Hash of the encrypted inf : d41d8cd98f00b204e9800998ecf8427e 0 Hash of the encrypted inf : cfcd208495d565ef66e7dff9f98764da ) Пункт 1 При выборе действия 1 т.е. "создать файл и внести в него данные", создаётся файл, но данные в него не передаются, остаётся пустым. ( Внести данные в командную строку : 0 Создать файл и внести в него данные : 1 Внести данные с файла : 2
Выберите действие которое вам нужно : 1 ) Пункт 2 При выборе действия 2 т.е. "внести данные с файла и захэшировать их", при условии что вручную вы заполните .txt файл, выводится корректное хэш значение, но ,к сожалению, выводится оно как бесконечный цикл. ( Внести данные в командную строку : 0 Создать файл и внести в него данные : 1 Внести данные с файла : 2
Выберите действие которое вам нужно : 2 d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e )