elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema al dividir un string
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al dividir un string  (Leído 2,007 veces)
grandanh

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Problema al dividir un string
« 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;
    }
}


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema al dividir un string
« Respuesta #1 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! ..... !!!!




En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problema al dividir un string
« Respuesta #2 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.
« Última modificación: 8 Junio 2014, 13:17 pm por ivancea96 » En línea

grandanh

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Problema al dividir un string
« Respuesta #3 en: 8 Junio 2014, 16:03 pm »

Muchas gracias es justo lo que necesitaba jajaja
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines