Hello,
I'm working on a homework problem for class. I have a text tab delimited file and each row has a orginal base, target base, and a number that is represented in the orginal base. The program should read this file and be able to convert the number from the orginal base to the target base. I'm able to skip the header column and start reading the file into a sting vector, where each element is a line in the file, and that works fine. My problem is getting the actual numbers out of the vector in the orginal form they were in in the text file. For example, I have a convert.txt file that looks like this:
Or Ta N
B B 0111011100
D O 12345
So basically, have a problem converting the number part back into actual numbers. I'm grateful for any help! Here is my code below:
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <array>
#include <sstream>
using namespace std;
int dectobin()
{
return 0;
}
int dectooct()
{
return 0;
}
int bintodec()
{return 0;
}
int octtodec()
{return 0;
}
int bintooct()
{return 0;
}
int octtobin()
{return 0;
}
int main()
{
string filename;
ifstream file_id;
string line;
vector<string> data;
/*string num;
int n;
vector<int>numbers;*/
cout << "Input the source file and include the file extention: ";
cin >> filename;
file_id.open(filename, ios::in);
if (!file_id)
{
cerr << "Invalid filename.";
exit(1);
}
file_id.ignore(30, '\n');
while (!file_id.eof())
{
getline(file_id, line);
data.push_back(line);
}
//Not complete, the if statements will call the correct converting function
for (int i = 0; i< data.size(); i++)
{
char org = data[i][0];
char tar = data[i][2];
if (org == 'B'&& tar =='D')
cout <<"B TO D" <<endl;
if (org == 'B'&& tar =='O')
cout <<"B TO O" <<endl;
if (org == 'B'&& tar =='B')
cout << "same" << endl;
if (org == 'D'&& tar =='B')
cout <<"D TO B" <<endl;
if (org == 'D'&& tar =='O')
cout <<"D TO O" <<endl;
if (org == 'D'&& tar =='D')
cout << "same" << endl;
if (org == 'O'&& tar =='D')
cout <<"O TO D" <<endl;
if (org == 'O'&& tar =='B')
cout <<"O TO B" <<endl;
if (org == 'O'&& tar =='O')
cout << "same" << endl;
}
/*
I used this to make sure the vector was being filled
for (int i = 0; i < data.size(); i++)
{
for (int j = 0; j < data[i].size(); j++)
cout << "Printing index ["<<i<<"]["<<j<<"]: "<<data[i][j] << endl;
}
cout << endl; */
/*
this didn't quite work the way I wanted it to
n came back as a negative number, but I wanted to keep this bit in to
show what I came up with so far
for (int i = 0; i < data.size(); i++)
{
for (int j = 4; j < data[i].size(); j++)
if(isdigit(data[i][j]))
{
std::stringstream ss(data[i][j]);
ss >> n;
cout << n <<endl;
}
numbers.push_back(n);
}*/
return 0;
}