Converting int[] to String in C++

47,357

Solution 1

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();
}

Solution 2

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!

Solution 3

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';
}

Solution 4

 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]);

Solution 5

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' ) );
Share:
47,357
Manoj
Author by

Manoj

My main interest lie in the java based applications with focus on Platform architecture.

Updated on November 03, 2020

Comments

  • Manoj
    Manoj over 3 years

    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

    char data_bytes[] = { 0, 0, 1, 1, 0, 0, 3, 3};
    std::string header = new std::string(data_bytes, 8).c_str());
    

    I converted the initial string to int array using atoi. Now i'm not sure how to make the string out of it. Let me know if there is any better approach.