rendered paste body// Final Project
// Programmer: Michael William
// Editor used: Pad
// Compiler used: VC++ 2005 Professional
//
#include <iostream>
#include <fstream>
#include <string>
#include <deque>
using namespace std;
struct mail
{
string lineFromFile;
string eMail;
};
int main()
{
string File;
cout << "Enter the name of the file to be opened: ";
getline(cin, File);
ifstream fin;
fin.open(File.c_str());
if(!fin.good()) throw "I/O error";
if(File.length() < 0)
fin.open("fileContainingEmails.txt");
deque<mail> myDeque;
mail collect;
while(fin.good())
{
getline(fin, collect.lineFromFile);
myDeque.push_back(collect);
}
int i;
int j;
collect.eMail;
int countMail = 0;
bool isValid = false;
for(i = 0; i < myDeque.size(); i++)
{
for(j = 0; j < myDeque[i].lineFromFile.size(); j++)
{
if(myDeque[i].lineFromFile[j] == '@')
{
int s = i - 1;
if('A' >= myDeque[i].lineFromFile[s] && myDeque[i].lineFromFile[s] <= 'Z' || 'a' >= myDeque[i].lineFromFile[s] && myDeque[i].lineFromFile[s] <= 'z')isValid = true;
if(isValid != true)break;
if(s < 0)break;
if(isValid == true)s--;
collect.eMail = myDeque[i].lineFromFile[s];
{
if('0' >= myDeque[i].lineFromFile[s] || myDeque[i].lineFromFile[s] <= '9' || myDeque[i].lineFromFile[s] == '-' || myDeque[i].lineFromFile[s] == '_' || myDeque[i].lineFromFile[s] =='.' || myDeque[i].lineFromFile[s] == '+')isValid = true;
if(isValid != true)break;
if(s < 0)break;
if(isValid == true)s--;
collect.eMail = myDeque[i].lineFromFile[s];
{
int e = i + 1;
if('A' >= myDeque[i].lineFromFile[e] && myDeque[i].lineFromFile[e] <= 'Z' || 'a' >= myDeque[i].lineFromFile[e] && myDeque[i].lineFromFile[e] <= 'z')isValid = true;
if(isValid != true)break;
if(e == myDeque[i].lineFromFile.length())break;
if(isValid == true)e++;
collect.eMail = myDeque[i].lineFromFile[s];
{
if(myDeque[i].lineFromFile[e] =='.')isValid = true;
if(isValid != true)break;
if(e == myDeque[i].lineFromFile.length())break;
if(isValid == true)e++;
collect.eMail = myDeque[i].lineFromFile[s];
{
cout << collect.eMail << endl;
myDeque.push_back(collect);
countMail++;
}
}
}
}
}
}
}
fin.close();
cout << "" << endl;
cout << countMail << " email addresses where found! " << endl;
cout << "" << endl;
if(countMail > 0)
{
ofstream fout;
string outFile;
cout << "Where are these email addresses to be sent: ";
getline(cin, outFile);
fout.open(outFile.c_str());
for(i = 0; i < countMail; i++)
{
fout << myDeque[i].eMail << endl;
}
if(outFile.length() < 0)
fout.open("copyPasteMyEmails.txt");
for(i = 0; i < countMail; i++)
{
fout << myDeque[i].eMail << endl;
}
fout.close();
}
return 0;
}