Uregent Help!!!! main.exe stopped working

main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <cstdlib>
#include "Action.h"
#include "Action.cpp"

using namespace std;

void readCSV(istream &input, vector< vector<string> > &output)
{
        string csvLine;
        // read every line from the stream
        while( getline(input, csvLine) )
        {
                istringstream csvStream(csvLine);
                vector<string> csvColumn;
                string csvElement;
                // read every element from the line that is seperated by commas
                // and put it into the vector or strings
                while( getline(csvStream, csvElement, ',') )
                {
                        csvColumn.push_back(csvElement);
                }
                output.push_back(csvColumn);
        }
}

int main()
{
        fstream file("bones.csv", ios::in);
        if(!file.is_open())
        
        {
                std::cout << "File not found!\n";
                return 1;
        }
        // typedef to save typing for the following object
        
        csvVector csvData;

        readCSV(file, csvData);
        
        Queries queries(csvData);

system ("PAUSE");
return 0;
}


Action.cpp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include "Action.h"

using namespace std;

Queries::Queries(csvVector csvData)
{
      int column_index;
      string value;
      
      
      cout << "What type do you want to find?" << endl
     << "(0) Bone" << endl
     << "(1) Origin" << endl
     << "(2) deeporsuperficial" << endl
     << "(3) Location" << endl
     << "(4) Action" << endl;

      cin >> column_index;
      
    cout << "What is the value for that type you want to find?" << std::endl;
    cin >> value;
    




    for(size_t i = 0; i <= csvData.size();++i)
  {
    if(csvData[i][column_index] == value)
    {
      // The row is found
      for(vector<string>::iterator j = csvData[i].begin(); j != csvData[i].end(); ++j) // Output the row items
      {
        cout << *j << ", ";     
      }
     
}
    cout << "\n";
}
}


Action.h:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef _ACTION_H_
#define _ACTION_H_

#include <iostream>
#include <cstdlib>
#include <vector>
#include <string>
using namespace std;

typedef std::vector< std::vector<std::string> > csvVector;

class Queries {
public:
     Queries(csvVector csvData);

private:
    string bones;
    string origin;
    string location;
    string action;
    string deeporsuperficial;
};

#endif 


This is in Dev C++


Someone please help me!!!! :] What is the problem with this program?
Last edited on
#include "Action.cpp"
Don't ever include .cpp files like this. After everything has been compiled the linker takes all of the .cpp files and puts them into the final executable file, as long as you have the correct header files included (which you do) it will be able to see all of the methods/members.

Containers in C++ use zero based indexing. This means they go from 0 - one size less than the total amount. In this case you will want to change
for(size_t i = 0; i <= csvData.size();++i)
to
for(size_t i = 0; i < csvData.size();++i)
so it doesn't go out of bounds on the vector.

If it isn't working after those fixes you might want to use a debugger and go through your code slowly and see where exactly it has the problem.
Last edited on
My program does not run without #include "Action.cpp." It says llinked error to Action::Actiom(). Anyone please help? Also, where can I get debugger?
Topic archived. No new replies allowed.