000
17.03.2014, 20:17 Uhr
Yadgar
|
Hi(gh)!
Ich will ein Programm schreiben, das aus SVG-Skripten Texturdefinitionen für POV-Ray erzeugt... dazu muss ich natürlich erst einmal das SVG-Skript vom Massenspeicher einlesen. Da die Zeichenanzahl nicht von vornherein bekannt ist, verwendete ich zum Speichern der Zeichen im Arbeitsspeicher ein vector-Objekt vom Typ char:
C++: |
#include <iostream> #include <string.h> #include <fstream> #include <vector> using namespace std;
int main(int paramn, char* params[]) { if (paramn < 3) { cout << "Usage: flagmaker <input_file.svg> <output_file.inc>" << endl; return -1; } if (!(strstr(params[1], ".svg") || strstr(params[1], ".SVG")) || !(strstr(params[2], ".inc") || strstr(params[2], ".INC"))) { cout << "Input file must be an SVG (.svg) file, output file must be a POV-Ray include (.inc) file!" << endl; return -1; } ifstream svgfile; vector<char> puffer; char c; unsigned int i=0; svgfile.open(params[1]); if (!svgfile) { cerr << params[1] << " cannot be opened!" << endl; return -1; } while (c = svgfile.get() != EOF) puffer.push_back(c); cout << puffer.size() << endl; for (i < puffer.size(); i++;) { cout << puffer[i] << endl; i++; }
cout << params[1] << " has been converted to " << params[2] << endl; if (paramn > 3) cout << "Extra parameters ignored" << endl; svgfile.close(); return 0; }
|
Aus irgendeinem Grund wird zwar puffer bis auf die erforderliche Größe erweitert, die einzelnen char-Elemente scheinen aber alle den Wert NULL zu haben, jedenfalls gibt cout nichts aus! Warum?
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |