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:
- Usando la función to_string().
- Usando flujo de string.
- Agregando char ‘0’ a cada entero.
- Uso de fundición de tipos.
- Usando la función push_back.
- 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:
- Inserte datos en la transmisión usando el operador ‘<<‘ .
- Extraiga datos de la secuencia usando el operador ‘>>’ o usando la función str().
- 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.
- El primer paso es declarar una string vacía s.
- 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.
- 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.
- 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:
NingunoError:
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