¿Cómo almacenar dinámicamente un char* en un bucle de C++?
Me encuentro con un escenario en el que necesito registrar direcciones arbitrarias como char*
en un programa. Para simplificar el problema, supongamos que después de separar las palabras de una oración, debo pasar cada palabra como char*
a la biblioteca DLL para acciones posteriores.
Una forma estática de analizar “Hello World” sería así:
...</p>
<h1>incluye librería de terceros;</h1>
<p>char* w1 = "Hello".c<em>str();
char* w2 = "World".c</em>str();</p>
<p>función_de_terceros(w1);
función_de_terceros(w2);
Obviamente, el nombre de w1
y w2
es estático, lo que significa que tengo que escribir sus nombres manualmente. No es adecuado para pasar un número arbitrario de variables char*
a la función de terceros.
Escuché que no es posible nombrar variables con comodines, como w_n
, una forma alternativa de hacerlo sería usar un vector o una matriz de char*
.
Se me ocurrió esto:
“`
<h1>incluye<iostream></h1>
<h1>incluye<vector></h1>
<h1>incluye<cstring></h1>
using namespace std;
int main()
{
char* w[100];
string a = "Hello";
a.copy(w[0], a.size(), 0);
cout << "w[0]: " << w[0] << endl;
//función_de_terceros(w[0]);
a = "World";
cout << "a después: " << a << endl;
a.copy(w<a href="https://stackoverflow.com/questions/70541155/how-to-assign-char-variables-dynamicly-in-c">1</a>, a.size(), 0);
cout << "w<a href="https://stackoverflow.com/questions/70541155/how-to-assign-char-variables-dynamicly-in-c">1</a>: " << w<a href="https://stackoverflow.com/questions/70541155/how-to-assign-char-variables-dynamicly-in-c">1</a> << endl;
//función_de_terceros(w<a href="https://stackoverflow.com/questions/70541155/how-to-assign-char-variables-dynamicly-in-c">1</a>);
}
“““““
Nótese que reutilicé la variable a
ya que así sería en un bucle.
Sin embargo, la tercera salida no es lo que se supone que debe ser, y la salida impresa tiene solo dos líneas:
w[0]: Hello
a después: World
Por supuesto, estos son dos intentos fallidos. Pero ¿cómo pasar un número arbitrario de variables char*
a una función de una biblioteca de terceros, de alguna manera?
davy.ai
Generando variables
char*
dinámicas en C++Para pasar un número arbitrario de variables
char*
a una función de terceros de manera dinámica, se puede utilizar un vector para almacenar las variableschar*
. Aquí hay un ejemplo:“`c++
#include
#include
void third_party_function(char* s)
{
std::cout << s << ‘\n’;
}
int main()
{
std::vector<char*> words;
words.push_back(“Hola”);
words.push_back(“Mundo”);
}
Asegúrate de liberar la memoria con
delete[]
cuando hayas terminado de usar la variablechar*
.</char*>