В настоящее время я работаю над программой, в которой пользователь программы должен ввести имя пользователя и пароль, и программа выполнит поиск и проверит, есть ли такой пользователь, если он существует, затем переходить к экрану с дополнительными параметрами или повторно вводить имя пользователя.C++: чтение из файла/строки синтаксического анализа
В username.txt файлы, которые хранит имя пользователя и пароль, включает в себя следующие данные: (первый столбец имя пользователя, а второй является пароль)
john,abc
marry,cde
admin,admin
joseph,1234
Мой код выглядит следующим образом, но он не работает, после того, как i введите имя пользователя и пароль, программы автоматически закрываются. Можете ли вы мне помочь? Что-то не так с моим разбором строки на 2?
#include<iostream>
#include<fstream>
#include<sstream>
#include<string>
#include<math.h>
#include<stdio.h>
using namespace std;
void printoptionsadmin(){
cout << "Please select an option:" << endl;
cout << "1.Sell Stock\n2.Buy stock\n3.Inquiry\n4.Logout\n5.Shutdown" << endl;
}
void printoptions(){
cout << "Please select an option:" << endl;
cout << "1.Sell Stock\n2.Buy stock\n3.Inquiry\n4.Logout" << endl;
}
void main()
{
cout << "Please login." << endl;
stop:
string usertype;//user input
string passtype;//user input
string line;
string manager = "admin";
string managerp = "admin";
string user;//read from file
string pass;//read from file
ifstream openfile("username.txt");
cout << "Enter your username:";
cin >> usertype;
cout << "Enter your password:";
cin >> passtype;
bool found = false;
while (found&&getline(openfile, line))
{
stringstream iss(line);
getline(iss, user, ',');
getline(iss,pass);
if (usertype == manager && passtype == managerp)//admin login
{
void printoptionsadmin();
found = true;
break;
}
else if (usertype== user && passtype== pass)//regular login
void printoptions();
else
{
cout << "Invalid username or password, please start over." << endl;
goto stop;//going back to login screen
}
openfile.close();
}
}
Вы можете прочитать на * структурного программирования *. – cybermonkey