CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 5 of 5
  1. #1
    Join Date
    Oct 2001
    Posts
    745

    Reading from An Ini file

    I want to read an ini file which is as follows:
    I need a function which takes the ini-File name & the section to read as parameters to this function.
    and I want to read each string(Full string) in the section one by one.
    I want no windows specific code as I want the code to be compiled under Linux as well.

    ;32 Bit - 7.0 Line
    [builder]
    version=3
    menus=11
    bindings=2
    bellOnError=1
    bellOnWarning=1

    [Options]
    VirtualDesktop=0
    AlwaysOnTop=0

    Could any one help me on this regard.

  2. #2
    Join Date
    Jul 2002
    Location
    Don't Know, Don't Care
    Posts
    346
    As far as getting the file name...are you searching for it? or do you have it already? I'm not exactly sure how to search for files in a non windows fashion...you can do system calls, but i'm not sure what the unix equivilant to the DOS FIND command is. As far as reading in the parameters, that's easier.
    Code:
    #include <iostream>
    #include <fstream>
    #include <string>
    
    char * buffer=new char[256];//multiples work best, 8,16,32,64,128,etc.
    char * parameters=new char[128];
    char * builderParameters=new char[128];
    char * options=new char[128];
    ifstream fin("file.ini");//open reading of 'file.ini'
    
    int main()
    {
    //sorry about not tabbing this, but i don't feel like hitting space five times every line
    fin>>buffer;
    //now that i've read in 256 characters, i can search through them
    buffer=strchr(buffer,']');
    strcpy(buffer,parameters);
    parameters=strtok(parameters,'[');//now that i have parameters from after the first ']', remove parameters from other categories by taking off everything after the next '[' (category)
    strcpy(parameters,builderParameters);
    delete [] parameters;
    parameters=NULL;
    char * parameters=new char[256];//clean variables to prevent memory leaks
    buffer=strchr(buffer,'[');//go back to the buffer and fine the options section that was read from the ini file
    //since i don't know if you have any more sections i'll just stop at that, otherwise repeat the strtok process of the parameters variable
    strcpy(buffer,parameters);
    strchr(parameters,']');//don't do parameters=... in this case because it would overwrite and spill memory, we just want to move through the variable to the ']' so that you just get your parameters, not "options]" included
    strcpy(parameters,options);
    //good luck
    return 0;
    }

    C G C F A D--Feel the Noise

    "When your life goes nowhere and leads back to me, doesn't that tell you something?"
    ~Gray Area Fury

  3. #3
    Join Date
    Feb 2002
    Posts
    5,757
    Approach the INI file as any other database text file. You read each line and find the value and update the variable.

    Kuphryn

  4. #4
    Join Date
    May 1999
    Location
    Southern California
    Posts
    12,266
    If it were me I would probably write some functions that used only the C++ Standard Classes (little or no C functions) and read the data into a map of maps. You could have a map of sections and for each section a map of names and values. The entire file could be read when the file is opened; then the function to get a value from a section would be very easy.
    "Signature":
    My web site is Simple Samples.
    C# Corner Editor

  5. #5
    Join Date
    May 2000
    Location
    Phoenix, AZ [USA]
    Posts
    1,347
    Originally posted by Sam Hobbs
    If it were me I would probably write some functions that used
    only the C++ Standard Classes (little or no C functions) and read
    the data into a map of maps. You could have a map of sections
    and for each section a map of names and values. The entire file
    could be read when the file is opened; then the function to get a
    value from a section would be very easy.
    This is an excellent suggestion since INI values typically have one
    "key" to be associated with the "value". This method receives
    my vote.

    --Paul

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured