Pregunta

He estado usando PHP durante aproximadamente 4 años, sin embargo, me encontré con un problema que requiere algo con un rendimiento ligeramente mejor (: P), por lo que elegí C ++.

El programa que estoy escribiendo es un demonio de Linux que escaneará una base de datos MySQL en busca de URL para cargar, cargarlas usando cURL, buscar una cadena específica y luego actualizar la base de datos en consecuencia. El problema al que me enfrento es que no sé el tamaño de los datos que deben almacenarse en una variable para poder buscar una cadena específica.

Tuve la idea de usar una lista vinculada y asignar más nodos a medida que los datos llenan la lista. ¿Es esta una buena manera de hacer las cosas?

Gracias de antemano,

¿Fue útil?

Solución

en c ++ la clase vector puede almacenar una cantidad de datos de tamaño desconocido.

#include <string>
#include <vector>

std::vector <std::string>Data;

std::string newData = "a String";
Data.push_back(newData);

std::string otherData = "a different String";
Data.push_back(otherData);

, por supuesto, 'cadena' podría ser cualquier tipo de datos que desee, y puede acceder a los datos utilizando los Datos [0] para devolver la primera cadena, y puede usar Data.size () para devolver la cantidad de cadenas en el vector / matriz.

for(int x = 0; x != Data.size(); x++)
{
   //Do what you want with the data here using Data[x]
}

Otros consejos

En general, desearía utilizar uno de los contenedores estándar. Mi sugerencia personal es std :: vector . Puede usarlo como una matriz (ya que se garantiza que los datos son contiguos) y tiene operaciones convenientes de indexación e inserción (parece que no está interesado en la eliminación en este momento).

Específicamente, podría configurar algo como

std::vector<char> buff;
// while you are reading data
buff.push_back (item);

Cuando haya terminado, puede llamar a buff.size para averiguar cuánto lee.

Como una ventaja adicional (si de hecho se trata de almacenamientos intermedios de caracteres), cuando finalmente obtenga todos los datos que necesita, puede convertirlos en std :: string para hacer lo que desee. hacer.

std::vector<char> buff;
buff.push_back('e');
buff.push_back('a');
buff.push_back('t');

std::string s(&buff[0], buff.size());

Editado para su corrección.

Tienes mucho que descubrir allí.

Debe orientar específicamente su descubrimiento al STL: use referencia de C ++

Ahora debe intentar aprender a usar:

  • std::vector
  • std::string
  • std :: cin y std :: cout (globals)

En std :: string debe tener en cuenta una buena cantidad de algoritmos como find , find_first_of , find_last_of .

Tenga en cuenta que las manipulaciones de cadenas en C ++ pueden ser bastante desafiantes (como en el caso detallado).

Si se siente cómodo con las expresiones regulares, puede intentar Boost.Regex . Tenga en cuenta que debe vincular con su biblioteca.

Además, si vienes de PHP y quieres aumentar tu rendimiento, podrías comenzar con muchos lenguajes de script diferentes (Python es mi favorito), y probablemente sería más fácil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top