input/ouput/ looping

Newbie Member
28Jun2006,00:44   #1
VickieQuirk's Avatar
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
Go4Expert Founder
28Jun2006,10:46   #2
shabbir's Avatar
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.
Newbie Member
28Jun2006,18:55   #3
VickieQuirk's Avatar
thank you
Go4Expert Founder
28Jun2006,18:59   #4
shabbir's Avatar
Quote:
Originally Posted by VickieQuirk
thank you
My pleasure.