input/ouput/ looping

VickieQuirk's Avatar, Join Date: Jun 2006
Newbie Member
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: CPP
#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;
}

Last edited by shabbir; 28Jun2006 at 10:39.. Reason: Syntax highlighting
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
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.
VickieQuirk's Avatar, Join Date: Jun 2006
Newbie Member
thank you
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Quote:
Originally Posted by VickieQuirk
thank you
My pleasure.