Como Converter Char Array em Strings em C++

Jinku Hu 12 outubro 2023
  1. Utilize std::string Construtor para converter Char Array em String
  2. Utilize a função memmove para converter Char Array em String
  3. Utilize std::basic_string::assign Método para converter Char Array em String
Como Converter Char Array em Strings em C++

Este artigo introduz múltiplos métodos para converter um array de char em um recipiente string.

Utilize std::string Construtor para converter Char Array em String

Neste exemplo, declaramos uma string em C constante, que é então utilizada como parâmetro de construção de uma string. Este método calcula automaticamente o comprimento da string. Após a chamada do construtor, podemos manipular a variável tmp_string conforme a necessidade.

#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

Utilize a função memmove para converter Char Array em String

Uma maneira mais simples é copiar os dados de char* para um contêiner inicializado de string. Desta forma, você deve conhecer com antecedência o comprimento do array char para passá-lo na função memmove. Observe que a inicialização do contêiner string é crítica para um comportamento correto, e é por isso que estamos preenchendo a variável tmp_string com 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;
}

Note que, você também pode copiar os dados c_string para tmp_string utilizando várias funções como: memcpy, memccpy, mempcpy, strcpy ou strncpy, mas não se esqueça de ler cuidadosamente as páginas do manual e considerar seus casos/bugs de borda.

Utilize std::basic_string::assign Método para converter Char Array em String

Como no exemplo anterior, este método requer o comprimento do array char. Definimos um ponteiro char chamado tmp_ptr e atribuímos a ele o endereço do primeiro caractere em 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

Artigo relacionado - C++ Char

Artigo relacionado - C++ String