Como Converter uma String em Char Array em C++

Publicado por Mauricio Ferrari em 22/02/2021

[ Hits: 15.352 ]

Blog: https://www.youtube.com/@LinuxDicasPro

 


Como Converter uma String em Char Array em C++



Esses dias, tive a necessidade de converter uma string em char array. Então, resolvi buscar pela internet a melhor forma de fazer isso. Encontrei três opções mas, tive dificuldades em buscar essas informações e por isso resolvi traduzir a dica que veio desse link: Convert string to char array in C++

Esse link apresentou as três formas a seguir.

MÉTODO 1

Uma das formas de fazer a conversão é usando as funções c_str() e strcpy() da biblioteca cstring. A função c_str() é usada para retornar um ponteiro para um array que contém uma seqüência de caracteres terminada em nulo representando o valor atual da string. Depois, é usado a função strcpy() para encontrar os elementos para copiar em uma char array. Depois de copiá-lo, podemos usá-lo como um array simples.

#include <iostream>
#include <cstring>

using namespace std;

int main() {
    string s = "VivaoLinux";  // Declaração da String
    int n = s.length();
    char char_array[n + 1]; // Declarar Char Array
    strcpy(char_array, s.c_str()); // Copiar o Conteúdo da String para o Char Array
    for (int i = 0; i < n; i++){
        cout << char_array[i];
    }
    return 0;
}

MÉTODO 2

O segundo método segue o mesmo esquema:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string s("geeksforgeeks"); // Atribuindo Valor a String
    char p[s.length()]; // Declarando a Char Array
    int i;
    for (i = 0; i < sizeof(p); i++) {
        p[i] = s[i];
        cout << p[i];
    }
    return 0;
}

MÉTODO 3 - C++ 14

Esse foi o que eu usei. É mais atual, simples e mais eficiente. Podemos atribuir diretamente o endereço do primeiro caractere da string a um ponteiro para char:

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

using namespace std;

int main() {
    char* char_arr;
    string str_obj("GeeksForGeeks");
    char_arr = &str_obj[0]; // É só isso?
    cout << char_arr;
    return 0;
}

Com esses métodos em mãos, é só usar o que for mais conveniente para cada caso.

Outras dicas deste autor

Instalando um VLC melhor no Deepin 20

gcc: fatal error: cannot execute 'cc1plus': execvp: [...] - Como resolver no Linux Mint 20

Listando Serviços e Pacotes mais Facilmente no Slackware

Clonando uma tag específica no GIT

Troque o Basename por Expansão de Parâmetros

Leitura recomendada

Qt 4.5 (Desenvolvimento multi-plataforma em C++ com Qt)

Ocorrência de uma string em outra

Obtendo a data e a hora de compilação em C

Kylix - Ferramenta para programadores Delphi

O poder do #define

  

Comentários
[1] Comentário enviado por danniel-lara em 22/02/2021 - 19:09h


Muito bom

[2] Comentário enviado por maurixnovatrento em 22/02/2021 - 21:04h


[1] Comentário enviado por danniel-lara em 22/02/2021 - 19:09h


Muito bom


valeu



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts