Connecting Tech Pros Worldwide Forums | Help | Site Map

how to do a simple loop to store strings ??

news.hku.hk
Guest
 
Posts: n/a
#1: Jul 22 '05
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
Guest
 
Posts: n/a
#2: Jul 22 '05

re: how to do a simple loop to store strings ??


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:
[color=blue]
> 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
>
>[/color]

--
Karthik

------

Humans please 'removeme' for my email.
Carl Muller
Guest
 
Posts: n/a
#3: Jul 22 '05

re: how to do a simple loop to store strings ??


"news.hku.hk" <billychu@hkusua.hku.hk> wrote in message news:<408b5af2$1@newsgate.hku.hk>...[color=blue]
> 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[/color]

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.
Jeff Schwab
Guest
 
Posts: n/a
#4: Jul 22 '05

re: how to do a simple loop to store strings ??


news.hku.hk wrote:[color=blue]
> 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 ??[/color]

Yes. Look up the std::getline function.
Jon Bell
Guest
 
Posts: n/a
#5: Jul 22 '05

re: how to do a simple loop to store strings ??


In article <408b5af2$1@newsgate.hku.hk>,
news.hku.hk <billychu@hkusua.hku.hk> wrote:[color=blue]
>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;[/color]

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 <jtbellm4h@presby.edu> Presbyterian College
Dept. of Physics and Computer Science Clinton, South Carolina USA
Jacek Dziedzic
Guest
 
Posts: n/a
#6: Jul 22 '05

re: how to do a simple loop to store strings ??



news.hku.hk wrote:[color=blue]
> 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 ??[/color]

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.
Jacek Dziedzic
Guest
 
Posts: n/a
#7: Jul 22 '05

re: how to do a simple loop to store strings ??


Jacek Dziedzic wrote:
[color=blue][color=green]
>> e.g. abc.txt contains 3 lines i.e.[/color][/color]

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

- J.
John Harrison
Guest
 
Posts: n/a
#8: Jul 22 '05

re: how to do a simple loop to store strings ??



"news.hku.hk" <billychu@hkusua.hku.hk> wrote in message
news:408b5af2$1@newsgate.hku.hk...[color=blue]
> 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
>[/color]

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


Closed Thread