// Martin Sewell // 28 November 2007 // Usage: libsvmformat inputfilename (outputfilename) #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; double data; string inputlinestring; char * inputfilename; char * outputfilename; if (argc == 2 or argc == 3) { inputfilename = argv[1]; if (argc == 2) { char * appendage = "f"; outputfilename = (char*) malloc((strlen(argv[1]) + strlen(appendage) + 1)*sizeof(char)); if (outputfilename == NULL) { printf("Problem with memory allocation.\n"); return -1; } strcpy(outputfilename, argv[1]); strcat(outputfilename, appendage); } if (argc == 3) { if (strcmp(argv[1], argv[2]) == 0) { printf("Filenames must be distinct.\n"); return -1; } outputfilename = (char*) malloc((strlen(argv[2]) + 1)*sizeof(char)); if (outputfilename == NULL) { printf("Problem with memory allocation.\n"); return -1; } strcpy(outputfilename, argv[2]); } ifstream inputfile(inputfilename); if (!inputfile) { cout << "Failed to open input file."; return -1; } ofstream outputfile(outputfilename); if (!outputfile) { cout << "Failed to open output file."; return -1; } while (!inputfile.eof( )) { while (getline(inputfile, inputlinestring)) { istringstream inputlinestream (inputlinestring); n = 0; while (inputlinestream >> data) { n = n + 1; outputfile << " " << n << ":" << data; } outputfile << endl; } } inputfile.close(); outputfile.close(); free(outputfilename); cout << "Success!" << endl; system("PAUSE"); } else cout << "Usage: libsvmformat inputfilename (outputfilename)" << endl; }