📌  相关文章
📜  使用示例将给定的二进制数组转换为 C++ 中的字符串

📅  最后修改于: 2022-05-13 01:55:07.553000             🧑  作者: Mango

使用示例将给定的二进制数组转换为 C++ 中的字符串

给定一个包含N个整数元素的二进制数组arr[] ,任务是创建一个字符串s ,其中包含与数组arr[]中相同索引处的所有N个元素。

例子:

在 C++ 中将二进制数组转换为字符串的不同方法是:

  1. 使用 to_string()函数。
  2. 使用字符串流。
  3. 将 char '0' 添加到每个整数。
  4. 使用类型转换。
  5. 使用 push_back函数。
  6. 使用变换()函数。

让我们开始详细讨论这些功能。

使用 to_string()函数

to_string()函数接受单个整数并将整数值转换为字符串。

句法:

下面是实现上述方法的 C++ 程序:

C++
// C++ program to implement
// the above approach
#include 
#include 
using namespace std;
  
// Driver code
int main()
{
  int arr[5] = {1, 0, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
    
  // Creating an empty string
  string s = "";
  for(int i = 0; i < size; i++) 
  {
    s += to_string(arr[i]);
  }
    
  cout << s;
  return 0;
}


C++
// C++ program to implement
// the above approach
#include 
#include 
#include 
using namespace std;
  
// Driver code
int main()
{
  int arr[5] = {1, 0, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
    
  // Creating an empty string
  string s = "";
  for(int i = 0; i < size; i++) 
  {
    // Creating an empty stringstream
    stringstream temp;
      
    // Inserting data into the stream
    temp << arr[i];
      
    // Extracting data from stream using 
    // .str() function
    s += temp.str();
  }
    
  // Printing the string 
  cout << s;
}


C++
// C++ program to implement 
// the above approach
#include 
#include 
using namespace std;
  
// Driver code
int main() 
{
  int arr[5] = {1, 1, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
  string s = "";
    
  // Creating an empty string
  for(int i = 0; i < size; i++) 
  {
    // arr[i] + 48
    // adding ASCII of value of 0 
    // i.e., 48
    s += arr[i] + '0'; 
  }
    
  // Printing the string 
  cout << s;
}


C++
// C++ program to implement
// the above approach
#include 
#include 
using namespace std;
  
// Driver code
int main()
{
  int arr[5] = {1, 1, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
    
  // Creating an empty string
  string s = "";
  for(int i = 0; i < size; i++) 
  {
    arr[i] += 48;
    s += (char) arr[i];
  }
    
  // Printing the string
  cout << s;
}


C++
// C++ program to implement 
// the above approach
#include 
#include 
using namespace std;
  
// Driver code
int main() 
{
  int arr[5] = {1, 0, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
  vector s;
  for(int i = 0; i < size; i++) 
  {
    s.push_back(arr[i] + '0');
  }
  for(auto it : s) 
  {
    cout << it;
  }
}


C++
// C++ program to implement
// the above method
#include 
#include 
using namespace std;
  
// define int to char function
char intToChar(int i) 
{
  // logic behind adding 48 to integer 
  // is discussed in Method "using type
  // casting".
  return i + 48;
}
  
// Driver code
int main() 
{
  int arr[5] = {1, 0, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
  char str[size + 1]; 
  transform(arr, arr + 5, str, intToChar);
    
  // Printing the string
  cout << str;
}


输出:

使用字符串流

stringstream 类在解析输入时非常有用。 stringstream 将字符串对象与流相关联,允许您从字符串中读取,就好像它是一个流(如 cin)。要使用 stringstream 类,代码中需要包含sstream 头文件

基本方法有:

stringstream 类可用于通过以下方式将整数值转换为字符串值:

  1. 使用'<<' 运算符将数据插入流中。
  2. 使用“>>”运算符或使用 str()函数从流中提取数据。
  3. 将提取的数据与字符串's'连接起来。

下面是实现上述方法的 C++ 程序:

C++

// C++ program to implement
// the above approach
#include 
#include 
#include 
using namespace std;
  
// Driver code
int main()
{
  int arr[5] = {1, 0, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
    
  // Creating an empty string
  string s = "";
  for(int i = 0; i < size; i++) 
  {
    // Creating an empty stringstream
    stringstream temp;
      
    // Inserting data into the stream
    temp << arr[i];
      
    // Extracting data from stream using 
    // .str() function
    s += temp.str();
  }
    
  // Printing the string 
  cout << s;
}

输出:

将 char '0' 添加到每个 Integer

将 char '0' 添加到每个整数的方法非常简单。

  1. 第一步是声明一个空字符串s。
  2. 遍历数组的每个元素,并通过将字符“0”的 ASCII 值与字符串s 相加来连接每个整数。

逻辑:
将 char '0' 的 ASCII 值与整数 0 和 1 相加的结果由编译器计算如下:

下面是实现上述方法的 C++ 程序:

C++

// C++ program to implement 
// the above approach
#include 
#include 
using namespace std;
  
// Driver code
int main() 
{
  int arr[5] = {1, 1, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
  string s = "";
    
  // Creating an empty string
  for(int i = 0; i < size; i++) 
  {
    // arr[i] + 48
    // adding ASCII of value of 0 
    // i.e., 48
    s += arr[i] + '0'; 
  }
    
  // Printing the string 
  cout << s;
}

输出:

使用类型转换

在类型转换和连接之前,需要将 48 添加到整数,否则会导致输出中出现一些奇怪的符号。发生这种情况是因为在 ASCII 表中,从 0 到 9 的数字具有从 48 到 57 的 char 值。在二进制数组的情况下,整数将为 0 或 1。

  1. 如果为 0,则添加后将为 48,然后在类型转换后char '0'与字符串连接。
  2. 如果它是 1,添加后它将是 49,然后类型转换char '1'与字符串连接。

下面是实现上述方法的 C++ 程序:

C++

// C++ program to implement
// the above approach
#include 
#include 
using namespace std;
  
// Driver code
int main()
{
  int arr[5] = {1, 1, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
    
  // Creating an empty string
  string s = "";
  for(int i = 0; i < size; i++) 
  {
    arr[i] += 48;
    s += (char) arr[i];
  }
    
  // Printing the string
  cout << s;
}

输出:

使用 push_back()函数

push_back()成员函数用于追加字符。将字符c 附加到字符串的末尾,将其长度增加一。

句法:

笔记:
添加char '0'背后的逻辑已在方法“将 '0' 添加到整数”中进行了讨论。

下面是实现上述方法的 C++ 程序:

C++

// C++ program to implement 
// the above approach
#include 
#include 
using namespace std;
  
// Driver code
int main() 
{
  int arr[5] = {1, 0, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
  vector s;
  for(int i = 0; i < size; i++) 
  {
    s.push_back(arr[i] + '0');
  }
  for(auto it : s) 
  {
    cout << it;
  }
}

输出:

使用变换()函数

transform()函数按顺序将操作应用于数组的元素,并将结果存储在另一个输出数组中。要使用 transform()函数,请包含算法头文件。

下面是实现上述方法的C++程序:

C++

// C++ program to implement
// the above method
#include 
#include 
using namespace std;
  
// define int to char function
char intToChar(int i) 
{
  // logic behind adding 48 to integer 
  // is discussed in Method "using type
  // casting".
  return i + 48;
}
  
// Driver code
int main() 
{
  int arr[5] = {1, 0, 1, 0, 1};
  int size = sizeof(arr) / sizeof(arr[0]);
  char str[size + 1]; 
  transform(arr, arr + 5, str, intToChar);
    
  // Printing the string
  cout << str;
}

输出: