Como Converter uma String em Char Array em C++
Dica publicada em C/C++ / Introdução
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.
Com esses métodos em mãos, é só usar o que for mais conveniente para cada caso.
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.
Muito bom