// Final Project // Programmer: Michael William // Editor used: Pad // Compiler used: VC++ 2005 Professional // #include #include #include #include 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 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; }