Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mari2diaz en 8 Febrero 2023, 23:32 pm



Título: Como reemplazar una cadena c++
Publicado por: mari2diaz en 8 Febrero 2023, 23:32 pm
Quiero hacer esto
Código
  1. struct Alumno{
  2. std::string nombre;
  3. std::string cedula;
  4. float indice;
  5. int nivel;
  6. int creditos;
  7. std::vector<std::vector<std::string>> materias;
  8. };
  9.  
  10. // Aqui guardo los datos en el vector
  11.  
  12.                        while(stream){
  13.    materia = {_materia, ""};
  14.    nodo->alumno.materias.push_back(materia);
  15.    getline(stream, _materia, ',');
  16. }
  17.  
  18.  
  19.                for(auto it : puntero->alumno.materias){
  20. if(it[0] == _materia && i < _cupos){
  21. it[1] = "INSCRITO";
  22. std::cout << "INSCRITO" << std::endl;
  23. }else if(it[0] == _materia && i >= _cupos){
  24. it[1] = "SIN CUPO";
  25. }
  26. }
pero ya intente de varias fomas y no reemplaza la cadena, no se si es por el it


Título: Re: Como reemplazar una cadena c++
Publicado por: RayR en 9 Febrero 2023, 02:38 am
Falta información. ¿Eso compila siquiera, o te da algún error? ¿Qué tipo de dato es materias? Preferentemente deberías poner la declaración de toda la estructura Alumno.

Ya de entrada, con ese código no vas a poder modificar ninguna cadena, ya que ese iterador trabaja sobre copias. Necesitarías que fuera una referencia. De cualquier manera, si materias es un vector de cadenas, entonces it[ n ] sólo se refiere al caracter "n" de cada cadena en cuestión, por lo que no es válido asignarle una cadena ni compararlo con una. Pon la información que te digo y ya podríamos ver exactamente cuál es el error.


Título: Re: Como reemplazar una cadena c++
Publicado por: mari2diaz en 9 Febrero 2023, 02:53 am
Ya esta solucionado, gracias
Código
  1.  
  2.               for(auto& it : puntero->alumno.materias){
  3. if(it[0] == _materia && i < _cupos){
  4. it[1] = "INSCRITO";
  5. std::cout << "INSCRITO" << std::endl;
  6. }else if(it[0] == _materia && i >= _cupos){
  7. it[1] = "SIN CUPO";
  8. }
  9. }