Cómo convertir un array de caracteres en una cadena en C++

Jinku Hu 12 octubre 2023
  1. Usa el constructor std::string para convertir un array de caracteres en una cadena
  2. Usar la función memmove para convertir el array de caracteres en cadena
  3. Usa el método std::basic_string::assign para convertir el array de caracteres en cadena
Cómo convertir un array de caracteres en una cadena en C++

Este artículo introduce múltiples métodos para convertir un array de char en un contenedor de string.

Usa el constructor std::string para convertir un array de caracteres en una cadena

En este ejemplo, declaramos una constante C-cadena, que luego se utiliza como un parámetro de construcción de string. Este método calcula automáticamente la longitud de la cadena. Después de la llamada al constructor, podemos manipular la variable tmp_string según sea necesario.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  const char* c_string = "This will be stored in std::string";

  string tmp_string(c_string);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}

Resultado:

This will be stored in std::string

Usar la función memmove para convertir el array de caracteres en cadena

Una forma más directa es copiar los datos de char* a un contenedor de string inicializado. De esta manera, debes saber la longitud del array de char con antelación para pasarla a la función de memmove. Ten en cuenta que la inicialización del contenedor string es crítica para un comportamiento correcto, y por eso estamos llenando la variable tmp_string con 0x01 bytes.

#include <cstring>
#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

constexpr int C_STRING_LENGTH = 34;

int main() {
  const char* c_string = "This will be stored in std::string";
  string tmp_string(C_STRING_LENGTH, 1);

  memmove(&tmp_string[0], c_string, C_STRING_LENGTH);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}

Ten en cuenta que, también puedes copiar los datos de c_string a tmp_string usando varias funciones como: memcpy, memccpy, mempcpy, strcpy o strncpy, pero ten en cuenta que debes leer cuidadosamente las páginas del manual y considerar sus casos de borde/bugs.

Usa el método std::basic_string::assign para convertir el array de caracteres en cadena

Como en el ejemplo anterior, este método requiere la longitud del array char. Definimos un puntero char llamado tmp_ptr y le asignamos la dirección del primer carácter en tmp_string.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

constexpr int C_STRING_LENGTH = 34;

int main() {
  const char* c_string = "This will be stored in std::string";
  string tmp_string;

  tmp_string.assign(c_string, C_STRING_LENGTH);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C++ Char

Artículo relacionado - C++ String