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;
}
}
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
#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! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Con una string mismo te funciona.
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.
Muchas gracias es justo lo que necesitaba jajaja