Table Problem2-(a different code)
Sorry to bother you all with a similar one as my previous.
I wrote below program for the purpose of, first reading 2 files. Think of these 2 files as the 2 columns of a data table. That means, 1st column is on the 1st file and the 2nd column is on the other file. On execution, the program must combine these 2 data columns(2 files) into a neat table( with solid 2 columns, of course), and write back it into a 3rd file.
My problem is that, the 2nd column doesn’t get printed in a straight column on the 3rd file. They get wiggled (If you can please test the program). I tried to solve this problem by inserting white spaces into the strings to align all of them along a single vertical line, but it didn’t worked because I regarded the lengths of all characters as the same, which is not the reality. I can’t see any way to do this aligning right, so can you please help?
Code:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
void adjoin();
void rprtprint();
void main()
{
adjoin();
rprtprint();
}
void adjoin()
{
char* f1name = "LFILE.dat";
char* f2name = "RFILE.dat";
char* f3name = "LRFILE.dat";
ifstream tfile1(f1name, std::ios::in);
ifstream tfile2(f2name, std::ios::out);
ofstream ofile(f3name);
string f1str, f2str;
vector <string> TRL;
int fullLen = 45, freeLen=0, cnt=0;
// read & store
while(!tfile1.eof()){
cnt++;
getline(tfile1, f1str);
getline(tfile2, f2str);
freeLen = fullLen - f2str.length();
TRL.push_back(f1str);
// attempt to put even spaces. but isn't working exactly because of the various lengths of
// characters
while(freeLen>0){
TRL.push_back(" ");
freeLen--;
}
TRL.push_back(f2str);
TRL.push_back(".");
}
// write
int i = 0;
while(i < TRL.size()){
ofile<< TRL[i];
i++;
}
}
void rprtprint()
{
char* ifname = "LRFILE.dat";
char* ofname = "PRINTFILE.dat";
ifstream ifile(ifname, std::ios::in );
ofstream ofile(ofname, std::ios::out );
string fstr;
while(!ifile.eof()){
getline(ifile, fstr, '.');
ofile<< fstr;
ofile<< "\n";
}
}
Re: Table Problem2-(a different code)
Quote:
Originally posted by kasun
Sorry to bother you all with a similar one as my previous.
I wrote below program for the purpose of, first reading 2 files. Think of these 2 files as the 2 columns of a data table. That means, 1st column is on the 1st file and the 2nd column is on the other file. On execution, the program must combine these 2 data columns(2 files) into a neat table( with solid 2 columns, of course), and write back it into a 3rd file.
My problem is that, the 2nd column doesn’t get printed in a straight column on the 3rd file. They get wiggled (If you can please test the program). I tried to solve this problem by inserting white spaces into the strings to align all of them along a single vertical line, but it didn’t worked because I regarded the lengths of all characters as the same, which is not the reality. I can’t see any way to do this aligning right, so can you please help?
Well, if you are using proportional fonts as you allude to (I regarded the lengths of all characters as the same, which is not the reality) then you aren't going to get straight colums without some complex functions you probably don't want to get into at your level. Best thing is to change the font of the display to a nonproportional font (courier, lucinda, terminal, ...)
You might be able to simply add \t (tab) between the columns, but each line of the first column must be similar in size.