Click to See Complete Forum and Search --> : Txt file reading and data storing
radnik
June 15th, 2008, 03:38 AM
Hey guys i need some help. I have a txt file which looks like this:
234 56 123 34 456 56 7 45.....
123 3 34 56 56 67 67 2.....
.
.
.
Where each line represents a series of points in coordinate system, and the first number in each line represents the x-point, second y-point,third x-point and so on. I need to read the file, and store the data. I would like to store it in a structure:
struct path {
int x();
int y();
};
I would also need some kind of automatic variable naming for struct path, so when i begin to store second line of points i would have struct name path2. These are just my ideas, so if you can, please help with every approach you can think of. And when the data storing is done i should be able to know the total number of paths and total number of point pairs (x,y) for every path. If you have any ideas please help, i'm a begginer and really need to solve this problem. Thank you in advance!!
laserlight
June 15th, 2008, 03:44 AM
I need to read the file, and store the data. I would like to store it in a structure
That's fine, though you could also consider using a std::pair. However, your example declares a struct named path with two member functions. You would write instead:
struct path {
int x;
int y;
};
Of course, you would need to store a list of path objects that corresponds to each line of data.
I would also need some kind of automatic variable naming for struct path, so when i begin to store second line of points i would have struct name path2.
An array or a std::vector of a list of path objects would be appropriate.
radnik
June 15th, 2008, 03:49 AM
Thanks for the reply laserlight. I made a mistake in my first post. I meant:
struct path {
int x[];
int y[];
};
because i have multiple x and y points for every path. How would i use std::pair, considering i have multiple points for every path?
laserlight
June 15th, 2008, 04:39 AM
Yes, that does make sense. However, then the naming should just change. A path is a series of connected points. A point has a pair of coordinates. Consequently, you could have a Path class that stores a list (e.g., a std::list, std::deque or std::vector) of Point objects. The Point class could be like my example for path, or it could be a typedef for std::pair (but having member variables named x and y would make things easier to understand).
radnik
June 15th, 2008, 04:47 AM
Ok, i'll try it with my struct. So what you are suggesting is to have array of structures like:
struct path {
int x[];
int y[];
};
path paths[i];
Am i right? I'm sorry for bugging you but i have more questions. I'm not to familiar with c++ so would you please tell me how would i read i line of numbers in txt file, store them in my structure and recognize EOL?
laserlight
June 15th, 2008, 04:53 AM
No, more like:
struct Point
{
int x;
int y;
};
class Path
{
public:
// ...
private:
std::list<Point> points;
};
Variable length arrays are not part of standard C++.
radnik
June 21st, 2008, 05:44 AM
If i have class and two vectors as follows:
class Koord { //varijabla vrijednosti koordinatnih tocaka x i y
public:
double x;
double y;
};
typedef vector<Koord>Tocke; //skup tocaka jednog puta
typedef vector<Tocke>Putovi; //svi putovi mape
Putovi trajektorije(15);
Tocke t(50);
then i read one line of text in stringstream and read doubles from stringstream:
while (!dat.eof()) {
string tmp;
double x,y;
getline(dat, tmp);
stringstream stmp(tmp);
//cout << "Linija:"<<tmp<<endl;
int p=0;
int &pp = p;
while (stmp >> x >> y) {
how can i store x and y point in vector "Tocke t"? Is it possible to do it with push_back? I have no idea on how to do this. If i set the size of vector (and i wouldn't like to because i then loose the meaning of using vectors) the whole vector will be filled with zeroes or some random memory junk. Is there any other way of doing this?
codeguru.com
Copyright Internet.com Inc., All Rights Reserved.