Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: grandanh en 7 Junio 2014, 16:41 pm



Título: Problema al dividir un string
Publicado por: grandanh en 7 Junio 2014, 16:41 pm
Hola a todos!

He hecho este código el cual separa las palabras de un string por comas. El problema es que quiero separarlo en vez de una coma por una coma y un espacio. El problema está aquí, ya que me salta el error de que el "separador" solo puede tener un carácter.

Aquí os dejo el código. ¿Alguien me podría echar una mano sobre como modificarlo? Gracias.

Código:
#include <iostream>
#include <cstring>
#include <sstream>

using namespace std;

int main(){

    string frase, aux;

    cout<<"Escribe la frase: ";
    getline(cin, frase);
    istringstream iss(frase);

    while(getline(iss, aux, ',')){
     cout<<aux<<endl;
    }
}


Título: Re: Problema al dividir un string
Publicado por: leosansan en 8 Junio 2014, 12:45 pm
Doctores en C++ tiene esre foro y yo no soy uno de ellos.

Pero probando, probando obtengo la salida que deseas:

Citar

Escribe la frase: leosansan, san,sam, leon, noel, 123,321
leosansan,
san,sam,
leon,
noel,
123,321


Código
  1. #include <iostream>
  2. #include <cstring>
  3. #include <sstream>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.  string frase, aux;
  9.  cout<<"Escribe la frase: ";
  10.  getline(cin, frase);
  11.  istringstream iss(frase);
  12.  if(getline(iss, aux, ',')){
  13.    istringstream iss(frase);
  14.    while(getline(iss, aux, ' ')){
  15.      istringstream iss(aux);
  16.      cout<<aux<<endl;
  17.    }
  18.  }
  19.  return 0;
  20. }

Supongo que se puede hacer de manera más eficiente, pero es hasta donde yo doy usando sólo istringstream.

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Problema al dividir un string
Publicado por: ivancea96 en 8 Junio 2014, 13:11 pm
Con una string mismo te funciona.

Código
  1. string s = ", asd, 123, , 12368, j, ccv";
  2. for(int i=0; i<s.size()-1; i++)
  3.    if(s[i]==',' && s[i+1]==' '){
  4.        if(i) cout << s.substr(0,i) << endl;
  5.        s.erase(0,i+2);
  6.        i=-1;
  7.    }
  8. cout << s << endl;

Stringstream hace que baje mucho el rendimiento.


Título: Re: Problema al dividir un string
Publicado por: grandanh en 8 Junio 2014, 16:03 pm
Muchas gracias es justo lo que necesitaba jajaja