Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > how to do a simple loop to store strings ??

Reply
Thread Tools

how to do a simple loop to store strings ??

 
 
news.hku.hk
Guest
Posts: n/a
 
      04-25-2004
is there any way to make a loop to store strings??

e.g. abc.txt contains 3 lines i.e.
this is line 1.
this is line 2.
this is line 3.

i want to create a loop that can make the three strings contains the
corresponding lines,

string line1; //contains "this is line1."
string line2; // contains "this is line2."
string line3; // contains "this is line3."
int no_of_lines = 3;

can a simple for loop do this ??
thanks a lot


 
Reply With Quote
 
 
 
 
Karthik
Guest
Posts: n/a
 
      04-25-2004
Read "Dynamic memory allocation" in any standard C++ book.
To be more specific , new - delete should do it for you.

If you donno in advance the number of lines, STL(Standard Template
Library) should prove useful - vector , list should do it for you.

HTH

news.hku.hk wrote:

> is there any way to make a loop to store strings??
>
> e.g. abc.txt contains 3 lines i.e.
> this is line 1.
> this is line 2.
> this is line 3.
>
> i want to create a loop that can make the three strings contains the
> corresponding lines,
>
> string line1; //contains "this is line1."
> string line2; // contains "this is line2."
> string line3; // contains "this is line3."
> int no_of_lines = 3;
>
> can a simple for loop do this ??
> thanks a lot
>
>


--
Karthik

------

Humans please 'removeme' for my email.
 
Reply With Quote
 
 
 
 
Carl Muller
Guest
Posts: n/a
 
      04-25-2004
"news.hku.hk" <(E-Mail Removed)> wrote in message news:<408b5af2$(E-Mail Removed)>...
> is there any way to make a loop to store strings??
>
> e.g. abc.txt contains 3 lines i.e.
> this is line 1.
> this is line 2.
> this is line 3.
>
> i want to create a loop that can make the three strings contains the
> corresponding lines,
>
> string line1; //contains "this is line1."
> string line2; // contains "this is line2."
> string line3; // contains "this is line3."
> int no_of_lines = 3;
>
> can a simple for loop do this ??
> thanks a lot


Individually named string variables might not be the easiest way of
processing a file. The usual solution for that would be to have a
vector of strings. If you want to use a for loop and named variables,
you could use an array of pointers to the strings (now I wonder if you
can have an array of references, and how you bind them!). But that is
having the tail wagging the dog - it might be more usual to have an
array of strings, and then have named references bound to the elements
of the array.
 
Reply With Quote
 
Jeff Schwab
Guest
Posts: n/a
 
      04-25-2004
news.hku.hk wrote:
> is there any way to make a loop to store strings??
>
> e.g. abc.txt contains 3 lines i.e.
> this is line 1.
> this is line 2.
> this is line 3.
>
> i want to create a loop that can make the three strings contains the
> corresponding lines,
>
> string line1; //contains "this is line1."
> string line2; // contains "this is line2."
> string line3; // contains "this is line3."
> int no_of_lines = 3;
>
> can a simple for loop do this ??


Yes. Look up the std::getline function.
 
Reply With Quote
 
Jon Bell
Guest
Posts: n/a
 
      04-25-2004
In article <408b5af2$(E-Mail Removed)>,
news.hku.hk <(E-Mail Removed)> wrote:
>is there any way to make a loop to store strings??
>
>e.g. abc.txt contains 3 lines i.e.
>this is line 1.
>this is line 2.
>this is line 3.
>
>i want to create a loop that can make the three strings contains the
>corresponding lines,
>
>string line1; //contains "this is line1."
>string line2; // contains "this is line2."
>string line3; // contains "this is line3."
>int no_of_lines = 3;


You can't do this with individually named string variables, but you can
do it with a vector of strings:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main ()
{
ifstream inputFile ("abc.txt");
vector<string> linevec;

string line;
while (getline (inputFile, line))
{
linevec.push_back (line);
}

for (int k = 0; k < linevec.size(); ++k)
{
cout << linevec[k] << endl;
}

return 0;
}

--
Jon Bell <(E-Mail Removed)> Presbyterian College
Dept. of Physics and Computer Science Clinton, South Carolina USA
 
Reply With Quote
 
Jacek Dziedzic
Guest
Posts: n/a
 
      04-25-2004

news.hku.hk wrote:
> is there any way to make a loop to store strings??
>
> e.g. abc.txt contains 3 lines i.e.
> this is line 1.
> this is line 2.
> this is line 3.
>
> i want to create a loop that can make the three strings contains the
> corresponding lines,
>
> string line1; //contains "this is line1."
> string line2; // contains "this is line2."
> string line3; // contains "this is line3."
> int no_of_lines = 3;
>
> can a simple for loop do this ??


Sure!

#include <sstream>
#include <string>
using namespace std;

string int_to_str(int i) {
ostringstream o;
o << i;
return o.str();
}

int main() {
const int no_of_lines=3;
string lines[no_of_lines];
for(unsigned int i=0;i<no_of_lines;++i)
lines[i]="this is line"+int_to_str(i);
}


.... except that you now have lines[0],lines[1],lines[2]
instead of line1, line2,line3.

HTH,
- J.

PS. What you really need is a textbook.
 
Reply With Quote
 
Jacek Dziedzic
Guest
Posts: n/a
 
      04-25-2004
Jacek Dziedzic wrote:

>> e.g. abc.txt contains 3 lines i.e.


Oops, missed that line and never noticed you wanted
these from a file, sorry.

- J.
 
Reply With Quote
 
John Harrison
Guest
Posts: n/a
 
      04-25-2004

"news.hku.hk" <(E-Mail Removed)> wrote in message
news:408b5af2$(E-Mail Removed)...
> is there any way to make a loop to store strings??
>
> e.g. abc.txt contains 3 lines i.e.
> this is line 1.
> this is line 2.
> this is line 3.
>
> i want to create a loop that can make the three strings contains the
> corresponding lines,
>
> string line1; //contains "this is line1."
> string line2; // contains "this is line2."
> string line3; // contains "this is line3."
> int no_of_lines = 3;
>
> can a simple for loop do this ??
> thanks a lot
>


You can't do it in a loop, but why would you want to? Like this

getline(file, line1);
getline(file, line2);
getline(file, line3);

john


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
Triple nested loop python (While loop insde of for loop inside ofwhile loop) Isaac Won Python 9 03-04-2013 10:08 AM
Strings, Strings and Damned Strings Ben C Programming 14 06-24-2006 05:09 AM
to store or not to store an image =?Utf-8?B?UnVkeQ==?= ASP .Net 6 03-30-2005 05:51 AM
How do I not store matched patterns in the $1.. strings? Jonathan Perl 1 12-25-2003 11:56 AM



Advertisments