Problema al dividir un string

Iniciado por grandanh, 7 Junio 2014, 16:41 PM

0 Miembros y 1 Visitante están viendo este tema.

grandanh

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.


#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;
   }
}

leosansan

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 (cpp) [Seleccionar]
#include <iostream>
#include <cstring>
#include <sstream>

using namespace std;

int main(){
  string frase, aux;
  cout<<"Escribe la frase: ";
  getline(cin, frase);
  istringstream iss(frase);
  if(getline(iss, aux, ',')){
    istringstream iss(frase);
    while(getline(iss, aux, ' ')){
      istringstream iss(aux);
      cout<<aux<<endl;
    }
  }
  return 0;
}


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

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



ivancea96

#2
Con una string mismo te funciona.

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


Stringstream hace que baje mucho el rendimiento.

grandanh

Muchas gracias es justo lo que necesitaba jajaja