I've just started playing with file io.
My raw data file contains the following:
-52.387596 61.659180 -2.277227
-52.341648 61.521450 -2.243313
.....
and I want to output a file such
#PSI Format 1.0
#
# column [0] = "x"
# column [1] = "y"
# column [2] = "z"
# column [3] = "Energy"
# column [4] = "Id"
# type[3] = byte
-52.3876 61.6592 -2.27723 0 0
As you can see from numbers in my outputed file the numbers have been rounded.
Q - How do I get around this?
Heres my code
Perhaps I'm missing something real silly. I tried to make x,y,z floats as well but this didnt work either :-(Code:#include <iostream> #include <fstream> #include <stdio.h> using namespace std; int main (int argv, char* arvc[]){ char *sourceFileName = "start.xyz"; char *destinationFileName = "finish.psi"; fstream finput; fstream foutput; finput.open(sourceFileName, ios::in); foutput.open(destinationFileName, ios::out); int index = 0; string line; double x, y, z; if (finput.is_open() && foutput.is_open()){ foutput << "#PSI Format 1.0" << endl; foutput << "#" << endl; foutput << "# column [0] = \"x\"" << endl; foutput << "# column [1] = \"y\"" << endl; foutput << "# column [2] = \"z\"" << endl; foutput << "# column [3] = \"Energy\"" << endl; foutput << "# column [4] = \"Id\"" << endl; foutput << "# type[3] = byte" << endl; foutput << "" << endl; while (!finput.eof()){ finput >> x >> y >> z; foutput << x << " " << y << " " << z << " " << 0 << " " << index << endl ; index++; } foutput.close(); finput.close(); }else{ cout << "Error in opening eithe input or output files"; if (finput.is_open ()){ finput.close(); } if (foutput.is_open()){ foutput.close(); } } cout << "Conversion undertaken"; cin.ignore(); cin.ignore (); return 1; }
Thanks for pointers.



LinkBack URL
About LinkBacks


