Hi
Thanks for your reply. Actually the input is slightly different (sorry for interpreting the previous as same as this one)
pattern1
SAF 10 1 10
CLB 20 18 10 11
pattern2
SAF 20 1 10 11
SAF 30 1 10
SAF 40 1 11
SAF 10 0 10
SAF 11 0 11
pattern3
SAF 31 1 10
SAF 21 1 11
SAF 10 0 10
SAF 11 0 11
pattern4
SAF 10 1 10
CLB 20 18 10
SAF 21 1 11
SAF 11 0 11
now here the first 3 fields in each line constitute the value field (like value1). So the output will be like
[CLB 20 18] [10 11] [ NULL] [ NULL] [ 10]
[SAF 10 0] [ NULL ] [ 10 ] [10 ] [NULL ]
[SAF 10 1 ] [10 ] [NULL ] [ NULL ] [10 ]
[SAF 11 0 ] [NULL ] [11 ] [11] [ 11 ]
[SAF 20 1 ] [NULL ] [10 11 ] [NULL ] [NULL ]
[SAF 21 1 ] [NULL ] [NULL ] [11 ] [11 ]
[SAF 30 1 ] [NULL ] [10 ] [ NULL ] [ NULL ]
[ SAF 31 1 ] [NULL ] [ NULL ] [10 ] [NULL ]
[ SAF 40 1 ] [NULL ] [11 ] [ NULL] [ NULL ]
The square brackets are just to show the whole thing as one string
Now if I read the complete line using getline then I am not able to ignore the lines with word pattern. If I use cin then I get each word individually. I hope I am not making it too complicated. My code so far is:
#include<iostream>
#include<string>
#include <fstream>
using namespace std;
int main(){
ifstream input("detection_report.txt", ios::in);
int columns = 0;
if(!input)
{
cerr<<"File could not be opend\n";
exit(1);
}
string value;
while(getline(input,value)){
string check = value.substr(0,1);
if (check == "p")
{
columns = columns + 1;
}
else{
//Here I want to read the lines without the "pattern" words.
//Secondly I just want to read only the first three groups to put in an array.
//which is quite difficult using a substr as some will need 8 characters and some will need 9.
}
cout << value << "\n";
}
input.close();
cout << "Columns: " << columns <<"\n";
return 0;
}
