Convierta una array binaria dada en una string en C++ con ejemplos

Dada una array binaria arr[] que contiene N elementos enteros, la tarea es crear una string s que contenga todos los N elementos en los mismos índices que estaban en la array arr[] .

Ejemplo:

Entrada: arr[]= {0, 1, 0, 1}
Salida: string=“0101

Entrada: arr[] = { 1, 1, 0, 0, 1, 1}
Salida: string = “110011”

 

Los diferentes métodos para convertir una array binaria en una string en C++ son:

  1. Usando la función to_string().
  2. Usando flujo de string.
  3. Agregando char ‘0’ a cada entero.
  4. Uso de fundición de tipos.
  5. Usando la función push_back.
  6. Usando la función transform().

Comencemos discutiendo cada una de estas funciones en detalle.

Usando la función to_string()

La función to_string() acepta un único entero y convierte el valor entero en una string.

Sintaxis:

string a_string (int val);

Parámetros:
val – Valor numérico.

Valor devuelto:
un objeto de string que contiene la representación de val como una secuencia de caracteres.

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to implement
// the above approach
#include <iostream>
#include <string>
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;
}

Producción:

10101

Usando flujo de string

La clase stringstream es extremadamente útil para analizar la entrada. Un stringstream asocia un objeto de string con una secuencia que le permite leer la string como si fuera una secuencia (como cin). Para usar la clase stringstream, el archivo de encabezado sstream debe incluirse en el código.

Los métodos básicos son:

clear(): para borrar la secuencia

str(): para obtener y establecer un objeto de string cuyo contenido está presente en la transmisión.

operator << agrega una string al objeto stringstream.

operador >> leer algo del objeto stringstream,

La clase stringstream se puede usar para convertir el valor entero en un valor de string de la siguiente manera:

  1. Inserte datos en la transmisión usando el operador ‘<<‘ .
  2. Extraiga datos de la secuencia usando el operador ‘>>’ o usando la función str().
  3. Concatene los datos extraídos con la string ‘s’ .

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to implement
// the above approach
#include <iostream>
#include <sstream>
#include <string>
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;
}

Producción:

10101

Agregar char ‘0’ a cada entero

El enfoque para agregar char ‘0’ a cada entero es bastante simple.

  1. El primer paso es declarar una string vacía s.
  2. Itere sobre cada elemento de la array y concatene cada entero agregando el valor ASCII de char ‘0’ con la string s.

Lógica:
el compilador calcula el resultado de agregar el valor ASCII de char ‘0’ con los números enteros 0 y 1 de la siguiente manera:

El valor decimal del carácter ‘0’ es 48.

string += 0 + ‘0’
      // += 0 + 48 
      // += 48
El valor de caracteres del decimal 48 es ‘0’ .

string += 1 + ‘0’
      // += 1 + 48
      // += 49
El valor de caracteres del decimal 49 es ‘1’ .

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to implement 
// the above approach
#include <iostream>
#include <string>
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;
}

Producción:

11101

Uso de conversión de tipos

Antes de escribir y concatenar, es necesario agregar 48 al número entero; de lo contrario, generará algunos símbolos extraños en la salida. Esto sucede porque en la tabla ASCII, los números del 0 al 9 tienen un valor char que comienza del 48 al 57. En el caso de una array binaria, el número entero será 0 o 1.

  1. Si es 0, después de agregarlo, será 48 y luego, después de escribir el tipo, el carácter ‘0’ se concatena con una string.
  2. Si es 1, después de agregarlo, será 49 y luego, después de escribir el tipo, el carácter ‘1’ se concatena con una string.

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to implement
// the above approach
#include <iostream>
#include <string>
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;
}

Producción:

11101

Usando la función push_back()

La función miembro push_back() se proporciona para agregar caracteres. Agrega el carácter c al final de la string, aumentando su longitud en uno.

Sintaxis:

string vacía:: push_back (char c)

Parámetros:  
Carácter que se añadirá.  

Valor devuelto: 
Ninguno

Error: 
lanza length_error si el tamaño resultante excede el número máximo de caracteres (max_size).

Nota:
La lógica detrás de agregar char ‘0’ se ha discutido en Método «Agregar ‘0’ a entero».

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

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

Producción:

10101

Usando la función de transformación()

La función transform() aplica secuencialmente una operación a los elementos de una array y almacena el resultado en otra array de salida. Para usar la función transform(), incluya el archivo de encabezado del algoritmo. 

A continuación se muestra el programa C++ para implementar el método anterior:

C++

// C++ program to implement
// the above method
#include <iostream>
#include <algorithm>
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;
}

Producción:

10101

Publicación traducida automáticamente

Artículo escrito por jainuditkumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *