Título: Separar string Ayuda Publicado por: prometheus48 en 17 Mayo 2012, 18:03 pm Hola,
Pues eso, en mi programa quiero separar el string que utilizo como entrada del usuario,por ejemplo el usuario escribe: "di hola", y despues separo el string en "di" y "hola", aunque mejor sería que fuera una función en la que puedes elegir el separador, como: separa(entrada,".") o separa(entrada,"a") Gracias y Saludos. Prometheus. Título: Re: Separar string Ayuda Publicado por: satu en 17 Mayo 2012, 19:36 pm Hola
Para eso puedes usar la función strtok (http://www.cplusplus.com/reference/clibrary/cstring/strtok/) Saludos Título: Re: Separar string Ayuda Publicado por: prometheus48 en 17 Mayo 2012, 19:51 pm No funciona:
Dice: strtok was not declared in this scope. Título: Re: Separar string Ayuda Publicado por: exel en 17 Mayo 2012, 20:13 pm Observa:
http://c.conclase.net/librerias/?ansifun=strtok Título: Re: Separar string Ayuda Publicado por: satu en 17 Mayo 2012, 20:15 pm Hola
Tienes que incluir string.h si estás en C o cstring si estás en C++ Saludos Título: Re: Separar string Ayuda Publicado por: prometheus48 en 17 Mayo 2012, 20:39 pm Mejor os dejo el código:
Código:
Salida del compilador: Código: C:\Users\Samuel\Documents\Programming\C++\Chocolate\main.cpp||In function 'int main()':| Título: Re: Separar string Ayuda Publicado por: RyogiShiki en 17 Mayo 2012, 21:10 pm Eso es porque strok pertenece a cstring.
Código Ya lo habia mencionado satu, no string, cstring o string.h aunque esta última pues no hace parte de la librería standard de C++ Saludos Título: Re: Separar string Ayuda Publicado por: prometheus48 en 17 Mayo 2012, 22:15 pm Bueno las función strtok() no me gusta, osea, algo como esto:
vector<string> split() { // La función. } vector<string> inp; int main() { string inp = "mov.ax.4"; split(inp,"."); //Guarda en inp[0] "mov" en inp[1] "ax" y en inp [2] "4" } No he podido usar strtok correctamente de todas formas. Gracias Igualmente. Saludos! Título: Re: Separar string Ayuda Publicado por: RyogiShiki en 18 Mayo 2012, 01:08 am si lo quieres hacer con vectore, pues bueno aqui te dejo un ejemplo que acabo de hacer:
Código
Espero te pueda servir de guia. He intentado simular lo mejor posible el comportamiento del método split() en Ruby. Saludos Título: Re: Separar string Ayuda Publicado por: durasno en 18 Mayo 2012, 04:08 am Hola! no pudist usar strtok porque no lo estas usando bien. Aparte de leer el link q te mando exel http://c.conclase.net/librerias/?ansifun=strtok falta agregar algo mas(q el link no lo dice pero si lo muestra en el ejemplo): cuando se llama por primera ves a strtok, en el primer argumento se pone la cadena q se va a separar en tokens. PERO cuando se llama x segunda vez(y posteriores) en el primer argumento hay q poner NULL
Código
Puse los printf xq no tengo idea de como funciona el cout :P (no se C++) Saludos Título: Re: Separar string Ayuda Publicado por: RyogiShiki en 18 Mayo 2012, 04:35 am durasno como se mencionó antes strok() no hace parte de <string> (http://www.cplusplus.com/reference/string/string/) y al compilar dará error:
Citar error: ‘strtok’ no se declaró en este ámbito Se debe incluir <cstring> (http://www.cplusplus.com/cstring) o <string.h> (http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.14.html) y esta última no pertenece a la librería estándar de C++ Saludos Título: Re: Separar string Ayuda Publicado por: durasno en 18 Mayo 2012, 05:04 am Lo q pasa es q yo copie el codigo que habia subido prometheus48 y no me di cuenta de eso :S, solo modifiq la part q estaba mal (o lo q me quisiste decir es q strtok no esta en C++?? )
Saludos Título: Re: Separar string Ayuda Publicado por: RyogiShiki en 18 Mayo 2012, 05:30 am Claro que si lo está! XD bueno pues si lo copias es entendible que se te haya pasado =D, en C++ se puede encontrar bajo <cstring>
Saludos Título: Re: Separar string Ayuda Publicado por: prometheus48 en 18 Mayo 2012, 18:12 pm Citar si lo quieres hacer con vectore, pues bueno aqui te dejo un ejemplo que acabo de hacer: Código vector<string> split(string str, char token) { vector<string> res; string tmp; for ( unsigned int i = 0; i <= str.length(); i++ ) { if ( str == token || i == str.length() ) { if ( str[i + 1] == token ) continue; res.push_back(tmp); tmp.erase(); i++; } tmp += str; } return res; } Espero te pueda servir de guia. He intentado simular lo mejor posible el comportamiento del método split() en Ruby. Saludos « Última modificación: Hoy a las 07:19 por RyogiShiki » Reportar al moderador En línea Exactamente lo que buscaba Muchísimas gracias RyogiShiki! :D:D:D Pero ahora tengo ortro problema(como no...), usar cin>>variable; Obligatoriamente cin>>variable; que cuando el usuario no introduce un valor, sino que directamente presiona enter, siga la ejecución como si el usuario hubiera introducido un valor. Gracias adelantadas, Salu2!!! Título: Re: Separar string Ayuda Publicado por: prometheus48 en 18 Mayo 2012, 18:37 pm Olvidadlo ya lo he solucionado.
Gracias a todos. Salu2! Título: Re: Separar string Ayuda Publicado por: RyogiShiki en 18 Mayo 2012, 18:52 pm Bien, me alegro que haya sido de ayuda.
Saludos |