954,500 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

How to take a line in a file and put it into an array?

I have to write this program that opens a file then sorts all these numbers in different ways. I plan on using the insertion method cause its one of the fastest, so that shouldn't be too difficult. But when you look at the text file its got spaces and numbers all over the place. I need the numbers of each category and a way to know which ones they belong to so I can sort them? My teacher has thrown in all kinds of ways to mess us up. I haven't taken C++ programming since freshman year and am completely lost. Heres a piece of my input file. Can anyone please help me?


Input File:

****************************************
LOAD BM SHEAR TORSION
STATION # (IN-LBS) (LBS) (IN-LBS)
******** ********** ********** *********
1 12345 23456 34567
2 12345 23456 34567
3 12345 23456 34567
****************************************

swbuko
Newbie Poster
12 posts since Sep 2008
Reputation Points: 10
Solved Threads: 0
 

first create a structure that contains the four numbers that can be found on each line

struct nums
{
   int stations;
   int lbs1;
   int lbs2;
   int lbs3;
};


now when you read a line, put the data in a structure, then add the structure to an array of structures.

Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

How do you add the data to a structure?
First I open my File in the program, then?

int main ()

{
ofstream myFile;
myFile.open ("InputFile.txt");

}

So I would have to put it in some sort of a structure then into a 2D array.

swbuko
Newbie Poster
12 posts since Sep 2008
Reputation Points: 10
Solved Threads: 0
 
int main()
{
    vector<nums> theList;
    nums data;
    ifstream in("filename.txt");
    while( in >> data.stations >> data.lbs1 >> data.lbs2 >> data.lbs3 )
    {
           theList.push_back(data);
    }

    // now you have an array of those structures.
}
Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

I get an error on the line that says pushback, im not too sure what push_back does though? I keep wanting to test it but i cant figure out these last two errors.

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <cmath>

using namespace std;


int main()
{

struct nums
{
   int stations;
   int lbs1;
   int lbs2;
   int lbs3;
};
    int theList;
    int vector;
    vector<nums> theList;
    nums data;
    ifstream in("InputFile.txt");
    while( in >> data.stations >> data.lbs1 >> data.lbs2 >> data.lbs3 )
    {
           theList.push_back(data);
    }
	return 0;
}
swbuko
Newbie Poster
12 posts since Sep 2008
Reputation Points: 10
Solved Threads: 0
 

>> im not too sure what push_back does though
Did you bother to look it up? When you don't know what something does then you need to do some research and read abo9ut it.

You have to include the header file
lines 12-18: declare structures outside all functions. Move that up above main();

line 20: delete that line because vector is the name of a c++ class.

Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

I just got it running, thats such a relief it seems like. Thanks so much. Its hard to follow what your doing though, just because my C++ class didn't cover some of this stuff. But my teacher, of course, could care less. Its an Aerospace engineering class that uses C++ and the instructor doesn't even know C++? He just assigns us random stuff and expects us to know how to do it haha. By the way I go to Alabama. Getting back on topic, the input file (the grader supplies it) will have a random number of sets of load stations such as:

set of Load Stations:

****************************************
LOAD BM SHEAR TORSION
STATION # (IN-LBS) (LBS) (IN-LBS)
******** ********** ********** *********
1 12345 23456 34567
2 12345 23456 34567
3 12345 23456 34567
****************************************

And each set will have a random number of Load Stations. Like they will all have 2 LS, or 3LS, or 4 LS, etc. If I'm understanding the code correctly it shouldn't a problem but I just thought I'd clear it up with you?

swbuko
Newbie Poster
12 posts since Sep 2008
Reputation Points: 10
Solved Threads: 0
 

Try to add the following line in the include part:

#include I get an error on the line that says pushback, im not too sure what push_back does though? I keep wanting to test it but i cant figure out these last two errors.

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <cmath>

using namespace std;


int main()
{

struct nums
{
   int stations;
   int lbs1;
   int lbs2;
   int lbs3;
};
    int theList;
    int vector;
    vector<nums> theList;
    nums data;
    ifstream in("InputFile.txt");
    while( in >> data.stations >> data.lbs1 >> data.lbs2 >> data.lbs3 )
    {
           theList.push_back(data);
    }
	return 0;
}
msnata2001
Newbie Poster
1 post since Apr 2010
Reputation Points: 9
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You