Converting int[] to String in C++

前端 未结 6 1219
星月不相逢
星月不相逢 2020-12-16 06:26

I have a string defined as std::string header = \"00110033\"; now I need the string to hold the byte values of the digits as if its constructed like this

相关标签:
6条回答
  • 2020-12-16 07:01

    If integ[] is the integer array, and s is the final string we wish to obtain,

    string s="";
    
    for(auto i=0;i<integ.size()-1; ++i)
        s += to_string(ans[i]); 
    
    cout<<s<<endl;
    
    0 讨论(0)
  • 2020-12-16 07:06

    Assuming you're using a "fairly normal" system where the numeric values of '0' to '9' are consecutive, you can just iterate over each element and subtract '0':

    for(int i = 0; i < header.size(); ++i)
    {
        header[i] -= '0';
    }
    
    0 讨论(0)
  • 2020-12-16 07:07

    you could write a little function

    string int_array_to_string(int int_array[], int size_of_array) {
      string returnstring = "";
      for (int temp = 0; temp < size_of_array; temp++)
        returnstring += itoa(int_array[temp]);
      return returnstring;
    }
    

    untested!

    a slightly different approach

    string int_array_to_string(int int_array[], int size_of_array) {
      ostringstream oss("");
      for (int temp = 0; temp < size_of_array; temp++)
        oss << int_array[temp];
      return oss.str();
    }
    
    0 讨论(0)
  • 2020-12-16 07:12
     char data_bytes[] = { 0, 0, 1, 1, 0, 0, 3, 3};
      std::string str;
     for(int i =0;i<sizeof(data_bytes);++i)
          str.push_back('0'+data_bytes[i]);
    
    0 讨论(0)
  • 2020-12-16 07:12

    You can do this:

    std::string header( data_bytes, data_bytes + sizeof( data_bytes ) );
    std::transform( header.begin(), header.end(), header.begin(), 
         std::bind1st( std::plus< char >(), '0' ) );
    
    0 讨论(0)
  • 2020-12-16 07:14

    Do this:

      char data_bytes[] = { '0', '0', '1', '1', '0', '0', '3', '3', '\0'};
      std::string header(data_bytes, 8);
    

    Or maybe, you want to do this:

      std::stringstream s;
      s << data_bytes;
      std::string header = s.str();
    

    Demo at ideone : http://ideone.com/RzrYY


    EDIT:

    Last \0 in data_bytes is necessary. Also see this interesting output here: http://ideone.com/aYtlL

    PS: I didn't know this before, thanks to Ashot I came to know this difference by experimenting!

    0 讨论(0)
提交回复
热议问题