I am coding using C++ and want to solve a problem "Exception thrown at 0x00007FF9351FC231 (ucrtbased.dll) in local_project.exe: 0xC0000005: Access violation reading location 0x0000000000000000."
I am using Visual Studio 2017. The error occurs after the sign() value is output. I tried change data type 'string' to 'char', but it's no use. And I make an exception to part iterator, but the same problem happened.
#include <iostream>
#include <string>
#include <stdio.h>
#include <cstdlib>
#include <list>
using namespace std;
//sign()
string sign()
{
string id;
string password;
string name;
string dpt;
list<string> sign_data;
list<string>::iterator s_iterator;
cout << ">> Sign_up <<" << endl;
cin.ignore(1, '\n');
cout << "ID: ";
getline(cin, id);
cout << "Password: ";
getline(cin, password);
cout << "Name: ";
getline(cin, name);
cout << "Department: ";
getline(cin, dpt);
sign_data.push_back(id);
sign_data.push_back(password);
sign_data.push_back(name);
sign_data.push_back(dpt);
for (s_iterator = sign_data.begin(); s_iterator != sign_data.end(); ++s_iterator) {
cout << *s_iterator << endl;
}
return 0;
}
int main()
{
int num;
site_member Member;
do {
cout << ">> Menu <<" << endl;
cout << "1.Login\n"
<< "2.Sign_up\n"
<< "3.Write\n"
<< "4.edit\n"
<< "5.exit\n" << endl;
cout << "Number:";
cin >> num;
if (num == 1) {
Member.login();
}
else if (num == 2) {
sign();
}
else if (num == 3) {
Member.write();
//main();
}
else if (num == 5) {
return 0;
}
else {
cout << "Wrong number. Please re-enter:" << endl;
main();
};
} while (num != 5);
return 0;
}
User contributions licensed under CC BY-SA 3.0