how to do a simple loop to store strings ??

N

news.hku.hk

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
 
K

Karthik

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
 
C

Carl Muller

news.hku.hk said:
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.
 
J

Jeff Schwab

news.hku.hk said:
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.
 
J

Jon Bell

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;
}
 
J

Jacek Dziedzic

news.hku.hk said:
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="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.
 
J

Jacek Dziedzic

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

- J.
 
J

John Harrison

news.hku.hk said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top