Converting an integer into a string

This is a discussion on Converting an integer into a string within the C++ Programming forums, part of the General Programming Boards category; Hello, I am trying to save a number of files with the filename format: "image#.bmp", where # is some number ...

  1. #1
    Registered User
    Join Date
    Apr 2005
    Posts
    7

    Converting an integer into a string

    Hello, I am trying to save a number of files with the filename format: "image#.bmp", where # is some number between 0 and 1024. I do not know how to get the number in there in a generic way, though.

    I know that there is a strtol routine in C, is there anything like the reverse, some simple way of converting an integer (like 72, 5551, 132) to a string? Using either C routines or (preferably) the C++ String class.

    Thank you in advance. I'm sure this is a somewhat common question.

  2. #2
    Kernel hacker
    Join Date
    Jul 2007
    Location
    Farncombe, Surrey, England
    Posts
    15,681
    I prefer to use sprintf() to do this, e.g.
    [code
    sprintf(filename, "image%04d.bmp", imgno);
    [/code]

    Using %04d will make the number look like 0001, 0012, 0123 or 1234 - so all the files come in numerical order if you list them by name (otherwise image9.bmp gets way down past image1xxx, image2xx, etc).

    --
    Mats
    Compilers can produce warnings - make the compiler programmers happy: Use them!
    Please don't PM me for help - and no, I don't do help over instant messengers.

  3. #3
    Registered User hk_mp5kpdw's Avatar
    Join Date
    Jan 2002
    Location
    Northern Virginia/Washington DC Metropolitan Area
    Posts
    3,674
    You can use stringstreams to do this which is basically an object-oriented (C++) way of doing the same thing as the sprintf function.

    Code:
    #include <sstream>
    #include <iomanip>
    #include <string>
    #include <fstream>
    using namespace std;
    
    ...
    
    for( int i = 1; i <= 1024; ++i )
    {
        stringstream sstr;
        sstr << "image" << setw(4) << setfill('0') << i << ".bmp";    // sstr = "image#.bmp" where # is [1..1024]
        ofstream out(sstr.str().c_str());                             // Open file "image#.bmp" for writing
        ...
        // Do stuff with the file here
        ...
        out.close();
    }
    Same provisions provided above that matsp mentioned about formating the numerical values as 0001, 0002, etc...
    I used to be an adventurer like you... then I took an arrow to the knee.

  4. #4
    Registered User
    Join Date
    Apr 2005
    Posts
    7
    Thank you both - I've got it solved (I used the sprintf version, but I'll move to stream version soon).

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 8
    Last Post: 04-25-2008, 02:45 PM
  2. String Class
    By BKurosawa in forum C++ Programming
    Replies: 117
    Last Post: 08-09-2007, 01:02 AM
  3. load gif into program
    By willc0de4food in forum Windows Programming
    Replies: 14
    Last Post: 01-11-2006, 09:43 AM
  4. Classes inheretance problem...
    By NANO in forum C++ Programming
    Replies: 12
    Last Post: 12-09-2002, 02:23 PM
  5. Converting a string to an integer
    By Unregistered in forum C++ Programming
    Replies: 3
    Last Post: 08-31-2001, 10:01 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21