Cómo convertir un string en una lista de strings

Iniciado por JonaLamper, 15 Octubre 2015, 15:26 PM

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

JonaLamper

Buenas,

Supongamos que tengo el string:

"Pablito clavo un clavito en la calva de un calvito"

y quiero sacar (sin usar un bucle) una lista de strings con cada una de las palabras, algo así:

Pablito
clavo
un
clavito
en
la
calva
de
un
calvito


¿Cómo podría hacerlo?
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

engel lex

a menos que uses alguna funcion de librería tipo split (que internamente igual es un ciclo) o que uses un template (que tambien es un ciclo, solo que "oculto")... tienes que hacer un ciclo...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

Otra opción es usar recursividad, haciendo una función, y llamándose a si misma, dividiendo en cada llamada un espacio.

geeke

Tambien puedes usar goto de esta forma

#include <stdio.h>

int main(void)
{
    char str[] = "Pablito clavo un clavito en la calva de un calvito";
    size_t i = 0;

start:
    if (str[++i] == '\0')
        goto end;
    if (str[i] == ' ')
        str[i] = '\n';
    goto start;
end:
    printf("%s\n", str);

    return 0;
}

engel lex

goto no deja de ser un ciclo (terriblemente aplicado)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

A todo esto, en la librería <algorithm> de C++, tienes el método "replace".

Código (cpp) [Seleccionar]
string str = "a b c d e f g";
std::replace(str.begin(),str.end(), ' ', '\n');


En caso de que lo que quieras es transformar los espacios en saltos de línea.

ThunderCls

-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

geeke

Cita de: engel lex en 17 Octubre 2015, 16:21 PM
goto no deja de ser un ciclo (terriblemente aplicado)

A que te refieres con terriblemente aplicado?

engel lex

Cita de: Coper en 18 Octubre 2015, 01:38 AM
A que te refieres con terriblemente aplicado?

es un ciclo forzoso hecho con goto... el goto se debe usar solo cuando no haya más opción ya que está realmente desaconsejado su uso...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

DarK_FirefoX

Cita de: Coper en 18 Octubre 2015, 01:38 AM
A que te refieres con terriblemente aplicado?

La utilización de GOTO está considerada una mala práctica de programación, la cual lleva a un código "espagueti".

Deberías leerte este articulo escrito por Edjer Dijkstra para una publicación de la ACM en 1968

Inglés: http://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf
Español: http://www.findthatpdf.com/search-6879333-hPDF/download-documents-gotoesp.pdf.htm

Salu2s