Для школы C++ lab (с использованием Microsoft Visual Studio, следовательно, система («пауза»)) Я делаю программу, которая позволит пользователю вводить адрес электронной почты, и программа выплюнет имя пользователя (до «@») и типа сайта, либо тип, основанный на последних трех буквах адреса (com - это коммерческие предприятия), либо код последней двухбуквенной страны (мы - Соединенные Штаты).фатальная ошибка в использовании вектора
#include <iostream>
#include <string>
using namespace std;
void getemail(string &email);
void finduser(string email);
void findsitetype(string email);
int main()
{
string email;
getemail(email);
finduser(email);
findsitetype(email);
system("pause");
return 0;
}
void getemail(string &email)
{
cout << "Please enter your email address: ";
cin >> email;
cout << endl;
}
void finduser(string email)
{
int index = email.find('@');
cout << "Username: ";
for (int i = 0; i < index; i++)
cout << email[i];
cout << endl << endl;
}
void findsitetype(string email)
{
int truesize = size(email);
string lastthree;
for (int i = 0; i < 3; i++)
{
lastthree[i] = email[truesize - i];
}
cout << "Site type: ";
if (lastthree == "edu")
cout << "Educational institutions";
if (lastthree == "org")
cout << "Not-for-profit organizations";
if (lastthree == "gov")
cout << "Government entities";
if (lastthree == "mil")
cout << "Military installations";
if (lastthree == "net")
cout << "Network service providers";
if (lastthree == "com")
cout << "Commercial ventures";
if (email[truesize - 2] == '.')
cout << "Country Code " << email[truesize - 1] << email[truesize];
}
Когда я запускаю код, он выплевывает имя пользователя, но при поиске типа сайта возникает фатальная ошибка. Я думаю, что это связано с неправильным использованием строки? Любая помощь оценивается.
Ошибка отладки!
Программа: C: \ Windows \ System32 \ MSVCP140D.dll Файл: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ Include \ xstring Line: 1681
Выражение: строка из индексного диапазона
Для получения дополнительной информации о том, как ваша программа может вызывать ошибку , см. документацию Visual C++ в отношении утверждений.
(Нажмите Retry для отладки приложения)
К сожалению, неправильно название! Я хотел сказать «фатальная ошибка при использовании строки» – e7kim
См. Изменения ниже. Приветствия. – ChrisD