在C ++中将int []转换为String

时间:2011-03-07 17:37:01

标签: c++ arrays string std

我有一个定义为std::string header = "00110033";的字符串 现在我需要字符串来保存数字的字节值,就好像它的构造一样

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

我使用int将初始字符串转换为atoi数组。现在我不确定如何制作它的字符串。如果有更好的方法,请告诉我。

6 个答案:

答案 0 :(得分:3)

你可以写一点功能

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

未测试!

略有不同的方法

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

答案 1 :(得分:2)

这样做:

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

或许,你想这样做:

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

在ideone演示:http://ideone.com/RzrYY


编辑:

data_bytes中的最后\0是必需的。另请参阅此处有趣的输出:http://ideone.com/aYtlL

PS:我之前不知道这一点,感谢 Ashot 我通过实验来了解这种差异!

答案 2 :(得分:1)

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

答案 3 :(得分:1)

假设您正在使用“相当正常”的系统,其中'0''9'的数值是连续的,您可以迭代每个元素并减去'0'

for(int i = 0; i < header.size(); ++i)
{
    header[i] -= '0';
}

答案 4 :(得分:1)

你可以这样做:

std::string header( data_bytes, data_bytes + sizeof( data_bytes ) );
std::transform( header.begin(), header.end(), header.begin(), 
     std::bind1st( std::plus< char >(), '0' ) );

答案 5 :(得分:0)

如果 integ [] 是整数数组,而 s 是我们希望获得的最终字符串,则

string s="";

for(auto i=0;i<integ.size()-1; ++i)
    s += to_string(ans[i]); 

cout<<s<<endl;