Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  convert.cpp
Language: C/C++
Code:
#include <fstream>
#include <iostream>
#include <string>
#include <limits.h>
#include <vector>

using namespace std;

int main(int argc, char* argv[]) {
    if(argc < 3) {
        throw runtime_error("Insufficient parameters passed to command");
    }

    ifstream input(argv[1]);
    ofstream output(argv[2]);

    if (!input) {
        throw runtime_error("Input file could not be opened");
    }

    if(!output) {
        throw runtime_error("Failed to create output file");
    }

    input.ignore(INT_MAX, '\n'); // ignore ply declaration
    input.ignore(INT_MAX, '\n'); // ignore character set declaration

    // Read VERTEX count
    int VERTEX_COUNT;

    input.ignore(INT_MAX, ' '); // ignore element
    input.ignore(INT_MAX, ' '); // ignore vertex
    input >> VERTEX_COUNT;
    input.ignore(INT_MAX, '\n');

    string word;
    while (true) {
        input >> word;
        if(word.compare("property") == 0)
            input.ignore(INT_MAX, '\n');
        else
            break;
    }

    // Read FACE count
    int FACE_COUNT;

    input.ignore(INT_MAX, ' '); // ignore element
    input.ignore(INT_MAX, ' '); // ignore face
    input >> FACE_COUNT;
    input.ignore(INT_MAX, '\n'); // ignore face

    cout << VERTEX_COUNT << endl;
    cout << FACE_COUNT << endl;

    while (true) {
        input >> word;
        if(word.compare("property") == 0)
            input.ignore(INT_MAX, '\n');
        else
            break;
    }

    input.ignore(INT_MAX, '\n');

    /********* COLLECT VERTICES *********/

    output << "*Node" << endl;

    for (int i = 0; i < VERTEX_COUNT; i++) {
        float x, y;
        input >> x >> y;
        
        input.ignore(INT_MAX, '\n'); // jump to end of line

        output << i + 1 << ",\t" << x << ",\t" << y << endl;
    }

    output << "*Element, type=CPS3" << endl;

    /********* COLLECT FACES *********/

    for (int i = 0; i < FACE_COUNT; i++) {
        int a, b, c;
        input.ignore(INT_MAX, ' '); // ignore 3
        input >> a >> b >> c;
        
        input.ignore(INT_MAX, '\n'); // jump to end of line

        output << i + 1 << ", " << a << ", " << b << ", " << c << endl;
    }

    input.close();
    output.close();

    return 0;
}
Comments: