Como Converter uma String em Char Array em C++

Publicado por Mauricio Ferrari em 22/02/2021

[ Hits: 15.583 ]

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

Formas de Obter as Dimensões do Emulador Terminal

Fazendo Upload no Git pelo Terminal

uGet no Linux Mint 20 com suporte a Torrent

Corrigindo a Falha de Segmentação do VirtualBox 6.1.18 no Slackware Current [RESOLVIDO]

Digitar comandos no terminal em várias linhas

Leitura recomendada

getch() e getche() não funcionam no ANSI

Classes para vários tipos (templates)

Incluindo paths para os seu próprios headers

Qt - Adicionando uma foto em Label (QLabel)

Instalando Code::Blocks no Ubuntu 12.04

  

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