hi everyone

I am writing a program using C++. The program converts a text file into a xml file. it reads in one input file and outputs it to another file. The thing is I have 10 folder and each of these 10 folders consists of 58 text files, I cant be doing it one by one as its gonna take very long. I have renamed the 58 files according to their number like this, filename-01.txt..........filename-58.txt, ok, so I want the program to input all these 58 files and then output them into something like filename-01.xml............filename-58.xml. Ok, how do I go about doing it. I am not really good at file manipulation stuff or the array thingy, but I am willing to learn if someone could tell me if is it possible for me to go about doing it.

Thank you

Since they are consequential numbers its pretty easy for format the filenames

#include <cstdio>
#include <iostream>
#include <fstream>
using namespace std;

const int MAXPATH = 255;

int main()
{
   int i;
   char filename[MAXPATH];
   for(i = 0; i < 58; ++i)
   {
       sprintf(filename,"%02d.txt", i+1);
        cout << filename << "\n";
       ifstream in(filename);
       // blabla
   }
}

write a function to covert a text file to an xml file.
have two nested loops; the outer one to iterate over the folders, and the inner one to iterate over files in that folder.

#include <fstream>
#include <string>
#include <iomanip>
#include <sstream>

void convert_to_xml( std::istream& in_file, 
                     std::ostream& out_file )
{
   // convert it
}

int main()
{
  struct folder_info { const char* name ; int num_files ; };
  const folder_info folders[] = 
  { 
     { "/usr/home/me/folder_1", 58 }, 
     { "/usr/home/me/folder_2", 41 },
     /* etc */ 
  }; 
  enum { NFOLDERS = sizeof(folders) / sizeof( folders[0] ) };

  const std::string file_name_prefix = "filename-" ;
  const std::string in_file_name_suffix = ".txt" ;
  const std::string out_file_name_suffix = ".xml" ;
  const char seperator ='/' ; 
  
  for( int i=0 ; i<NFOLDERS ; ++i )
    for( int j=0 ; j<folders[i].num_files ; ++j )
  {
     std::ostringstream in_file_name, out_file_name ;
     in_file_name << "folders[i].name" << seperator 
                  << file_name_prefix << std::setw(2) 
                  << std::setfill('0') << j+1 
                  << in_file_name_suffix ;
     out_file_name << "folders[i].name" << seperator 
                   << file_name_prefix << std::setw(2) 
                   << std::setfill('0') << j+1 
                   << out_file_name_suffix ;
     std::ifstream in_file( in_file_name.str().c_str() ) ;
     std::ofstream out_file( out_file_name.str().c_str() ) ;
     if( in_file && out_file ) 
        convert_to_xml( in_file, out_file ) ;
     // else error
  }
}

Rather than hand rolling the XML markup, you should use the TinyXML library to create the XML files. It's a very simple library, and comes with lots of examples.

Hey guys thanks, I needed to get my VTK (C++ working ). thanks alot

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.