I need help with the following assignment. I just can't seem to get it to work? It just creates a blank file for addresses. If anyone can tell me what I am doing wrong I will be forever grateful.. Ok, here's the assignment: You're working for a company that's building an email list from files of mail messages. They would like you to write a program that reads a file called mail.dat, and that outputs every string containing the @ sign to file addresses.dat. For the purpose of this project, a string is defined as it is by the C++ stream reader - a contiguous sequence of non-whitespace characters. Here is what mail.dat has in it: --------------------------------------------------------------------------- From: kadcock@clevelandstatecc.edu Date: June 4, 2005 To: Joe_student@tbrschool.edu Joe, Hope you have a good semester. Regards, Ken Adcock --------------------------------------------------------------------------- Here is what I have done: Code: #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream inFile; ofstream outFile; string tempString; inFile.open("mail.dat"); outFile.open("addresses.dat"); while(inFile) { inFile>>tempString; if(tempString.find('@')!=string::npos) outFile<<tempString; } inFile.close(); outFile.close(); return 0; }
The problem is with inFile>>tempString; which does not allows the whitespaces and it just restricts itself to the first blank character and so does not fetch any email address in tempString. Try using getline instead.