Question on converting unsigned long to std::string

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Ramesh

    #1

    Question on converting unsigned long to std::string

    Hi,

    I need to convert unsigned long data to a std::string, I googled a bit
    to see if the string class supports any methods to achieve this - but
    didnt find any, I think of using sprintf and converting to a char buf
    and then putting it back in std::string -

    is anyone aware of any other way?

    Thanks
    /R
  • Ruben

    #2
    Re: Question on converting unsigned long to std::string

    On Thu, 09 Oct 2008 21:12:51 -0700, Ramesh wrote:
    Hi,
    >
    I need to convert unsigned long data to a std::string, I googled a bit
    to see if the string class supports any methods to achieve this - but
    didnt find any, I think of using sprintf and converting to a char buf
    and then putting it back in std::string -
    >
    is anyone aware of any other way?
    >
    Thanks
    /R
    istringstream is one way without resorting to the C libraries

    see this example



    look around line 670


    668 float Weight::wgt(con st string &descr)
    669 {
    670 string errormsg("ERROR : enter a number followed by either \"kilograms\ " or \"pounds\"") ;
    671 istringstream stream1;
    672 stream1.str(des cr);
    673 if (!(stream1>>wgt _))
    674 throw errormsg;
    675 if(!(stream1>>u nit_))
    676 throw errormsg;
    677 errormsg = "ERROR: enter either \"kilograms\ " or \"pounds\"";
    678 if( unit_ == "kg" || unit_ == "k" || unit_ == "kilo" || unit_ == "kilogram"| | unit_ == "kilograms" ){
    679 unit_ = "kg";
    680 }else if( unit_ == "lb" || unit_ == "pound" || unit_ == "pd"|| unit_ == "pounds" ){
    681 wgt_ = wgt_ * 0.45454545;
    682 }else{
    683 throw errormsg;
    684 }
    685 return wgt_;
    686 }
    687

    --
    http://www.mrbrklyn.com - Interesting Stuff
    http://www.nylxs.com - Leadership Development in Free Software

    So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world - RI Safir 1998

    http://fairuse.nylxs.com DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002

    "Yeah - I write Free Software...so SUE ME"

    "The tremendous problem we face is that we are becoming sharecroppers to our own cultural heritage -- we need the ability to participate in our own society."

    "I'm an engineer. I choose the best tool for the job, politics be damned.<
    You must be a stupid engineer then, because politcs and technology have been attached at the hip since the 1st dynasty in Ancient Egypt. I guess you missed that one."

    © Copyright for the Digital Millennium

    Comment

    • d.j.a.de.kok@gmail.com

      #3
      Re: Question on converting unsigned long to std::string

      On Oct 10, 6:23 am, Ruben <ru...@www2.mrb rklyn.comwrote:
      istringstream is one way without resorting to the C libraries
      Since he wants to convert a number to a string, I'd rather use
      ostringstream. An example can be found at:



      -- Daniel

      Comment

      • Kai-Uwe Bux

        #4
        Re: Question on converting unsigned long to std::string

        Ramesh wrote:
        Hi,
        >
        I need to convert unsigned long data to a std::string, I googled a bit
        to see if the string class supports any methods to achieve this - but
        didnt find any, I think of using sprintf and converting to a char buf
        and then putting it back in std::string -
        >
        is anyone aware of any other way?
        If you are used to sprintf but want something that deals with std::string
        instead, you could try this:

        bool strprintf ( std::string & buffer, char const * format, ... ) {
        while ( true ) {
        buffer.resize( buffer.capacity () );
        int old_length = buffer.size();
        std::va_list aq;
        va_start( aq, format );
        int length_needed =
        vsnprintf( &buffer[0], old_length + 1, format, aq );
        va_end( aq );
        if ( length_needed < 0 ) {
        return ( false );
        }
        buffer.resize( length_needed );
        if ( length_needed <= old_length ) {
        return ( true );
        }
        }
        }


        WARNING: the above is not standard compliant; it assumes that std::string is
        contiguous (as far as I know, all implementations are, and it will be
        required by the next iteration of the standard C++0X); also it requires
        that is is legal to write a trailing 0 behind the string. Also, it assumes
        that vsnprintf() conforms to C99 or C++0X. Thus, you have to test this
        carefully.


        Best

        Kai-Uwe Bux

        Comment

        • Juha Nieminen

          #5
          Re: Question on converting unsigned long to std::string

          Ramesh wrote:
          is anyone aware of any other way?
          I really can't understand why two people have already answered your
          question with overly long and complicated answers, which are also
          basically just wrong. Come on, people, keep answers simple and
          concentrate on the *basics*.

          What you want is this:

          std::ostringstr eam os;
          os << yourUnsignedVal ue;
          std::string theValueAsStrin g = os.str();

          Comment

          Working...