?
Solved

C++ help Please

Posted on 2003-12-05
7
Medium Priority
?
357 Views
Last Modified: 2010-04-02
Hi experts,

I have the code as following. Can anyone give an idea how to place two strings in the file into two vectors ?
Thank you very much!

*****************************************************
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <cstring>

using namespace std;

 #define size 1000

int main()
{
             
      ofstream SaveString("strings.dat", ios::out);
      SaveString << "Test string1\n";
      SaveString << "Test string2\n";
      SaveString.close();


      ifstream Openstring("strings.dat", ios::in);
      char str;
      
      while (!Openstring.eof())
      {
            Openstring.get(str);
            cout << str;
      
      }

      Openstring.close();

/      return 0;
}
*************************************************
0
Comment
Question by:Ryanbhl
  • 3
  • 2
  • 2
7 Comments
 
LVL 17

Expert Comment

by:rstaveley
ID: 9887684
Not sure if I understood your question properly, but does this help?

--------8<--------
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
#include <string>

int main()
{
        std::vector<std::string> v;

        // Load the vector - use push_back to grow it accordingly      
        v.push_back("Test string 1");
        v.push_back("Test string 2");

        // Load the strings into the file
        {
                std::ofstream fout("strings.dat");
                copy(v.begin(),v.end(),std::ostream_iterator<std::string>(fout,"\n"));
        }

        // Read the strings from the file
        {
                std::ifstream fin("strings.dat");
                std::string str;
                while (getline(fin,str))
                        std::cout << str << '\n';
        }
}
--------8<--------
0
 

Author Comment

by:Ryanbhl
ID: 9888598
Hi  rstaveley,

Thank you very much for your help.

May be I did make it clear enough. I have a file stores two strings above, now I want to read the file, take two the strings and put them into two seperate vectors.

Example:
I have two vectors : vec1, vec2
Now, I want to put "Test string 1" into "vec1" ; and "Test string 2" into "vec2" by reading them from the file.
0
 
LVL 1

Accepted Solution

by:
meow00 earned 400 total points
ID: 9888885
Hi,
 
     How about the following code ? ( PS. you might want to change #include <string> to #include <cstring> ... depends on ur compiler )

meow.
---------------------------------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <vector>
#include <string>

using namespace std;

#define size 1000

int main()
{

     ofstream SaveString("strings.dat", ios::out);
     SaveString << "Test string1\n";
     SaveString << "Test string2\n";
     SaveString.close();

     ifstream Openstring("strings.dat", ios::in);
     string temp ;
     int count = 0 ;
     vector<string> vec1, vec2 ;

     while (!Openstring.eof())
     {
        getline(Openstring,temp) ;
        (count%2 ==0)? vec1.push_back(temp): vec2.push_back(temp) ;
        count ++ ;
     }

     Openstring.close();

     cout << "print vec1() :" << endl ;
     for(vector<string>::const_iterator it1 = vec1.begin(); it1 != vec1.end(); ++it1)
        cout << *it1 << endl ;

     cout << "print vec2() :" << endl ;
     for(vector<string>::const_iterator it2 = vec2.begin(); it2 != vec2.end(); ++it2)
        cout << *it2 << endl ;

     return 0;
}

-------------------------------------------------------
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:Ryanbhl
ID: 9890978
Thank you meow00,

Yes, that is what I am trying to do right now.
May I ask a question ?  

******************************************************
(count%2 ==0)? vec1.push_back(temp): vec2.push_back(temp) ;
******************************************************
In the line above, what does "count%2 == 0" mean ?? I am have some confuse here. I am very glad if you can explain it to me.

Again, Thank you very much for your guide.
0
 
LVL 17

Expert Comment

by:rstaveley
ID: 9891466
> (count%2 ==0)? vec1.push_back(temp): vec2.push_back(temp) ;

This is equivalent to

    if (count % 2 == 0)             /* If count is an even number */
        vec1.push_back(temp);
    else
        vec2.push_back(temp) ;

It pushes the tring alternately into one vector and then the other.
0
 
LVL 1

Expert Comment

by:meow00
ID: 9892257
Yes, rstaveley is correct !

 "(statement) ? A : B ;" means :
  if statement is true, we execute A ;
  if statement if false, we execute B ;
--------------------------------------------
 Also,  % means the residual of the division (modulus).
 e.g.    7/3 = 2 ......1   -> 7%3 = 1
           8/2 = 4 ......0   -> 8%4 = 0
           9/5 = 1 ......4   ->  9%5 = 4
                             ^
                          This is the residual
0
 

Author Comment

by:Ryanbhl
ID: 9893119
Thank you rstaveley and meow00 a lot,

Now I understand a lot more and know how to use the statement:  "(statement) ? A:B . I was doubt about this before but not anymore.
I really apreciate you guys.

Ryanbhl
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or class. For example, a XML parser will extract a tag from the source code, wh…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
Suggested Courses

609 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question