[ thejackal @ 16.03.2006. 14:20 ] @
Da li u c++ postoji funkcija koja razlikuje karkter od razmaka
odnosno da li postoji nacin da se iz recenice cita string po string a da se razmak preskace.
npr:
hocu da izdvojim svaku rec posebno iz recenice
"Zasto slon ima crvene oci?"
1.Zasto
2.slon
3.ima
4.crvene
5.oci


[ EArthquake @ 16.03.2006. 14:35 ] @
naravno da moze

uzimas karakter po karakter i proveravas da li je razmak ,
i razmak je karakter , u ascii tabeli ima oznaku 20h ili ti 20 u heksadecimalnom zapisu

npr:
Code:

main()
{

char recenica[300] = "Slon ima crvene oci";
int i;

for(i=0;i<sizeof(recenica);i++) if(recenica[i]=='\x20') recenica[i]= '\n';
printf("%s",recenica);
}


pisano na brzineu , ne zamerite ...
[ idb @ 16.03.2006. 14:57 ] @
Ako ostajes u oviru ascii skupa karaktera, postoji funkcija - vec pisano otome deset tema ispod...
Code:
#include <string.h>
  char *strtok( char *str1, const char *str2 );

Nije obavezno da razmak bude separator reci, nego moze i nesto drugo...
[ android~paranoid @ 16.03.2006. 17:28 ] @
Imao sam slican problem samo da napisem reci u obrnutom redosledu .
Neko mi je pomogao oko toga, i strtok lepo odradi posao, ali sam gledao
man stranicu u linuxu pa se valjda ne preporucuje ta f-ja, nego neka slicna (mozes pogledati).

Uglavnom, meni je radilo.

Da, bio je to idb . 10x :)

http://www.elitesecurity.org/tema/161339
[ Mali Misha @ 16.03.2006. 18:27 ] @
Ako ti ne smeta, mozes koristiti i int isspace(int); Ta vraca ne-nula ako mu je dat bilo koji space-karakter (Tab, Space, LF, CR, ...).

Code:
#include <ctype.h>

void f(const char*s)
{
    // ...
    
    while(*s)
    {
        if(isspace(*s))
        { /* ... */ }
        // ...

        s++;
    }
}


*edit* code skresan...

[Ovu poruku je menjao Mali Misha dana 16.03.2006. u 19:33 GMT+1]
[ X Files @ 16.03.2006. 18:33 ] @
Pogledaj ovde da li ti odgovara:
http://www.codeguru.com/cpp/tic/tic0226.shtml

[ k4rl0 @ 16.03.2006. 21:37 ] @
Meni je ovo najljepsi nacin rastavljanja na rjeci

Code:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string recenica,rijec[50];
    int i,b;
    b=1;
    getline(cin,recenica);
    for(i=0;i<recenica.length();i++)
    {
    if(recenica.substr(i,1)!=" ")
         rijec[b]=rijec[b]+recenica.substr(i,1);        
                                 
    if(recenica.substr(i,1)==" ")
          b++;
    }
    
    for(i=1;i<=b;i++)
    {
    cout<<rijec[i]<<"\n";
    }
       
    cout<<"\n";
    system("PAUSE");
}
[ pcaca @ 17.03.2006. 00:34 ] @
Recenicu mozes rastaviti jos pri ucitavanju.
Code:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
    string rec;
    vector<string> recenica;
    cout << "Unesi jednu recenicu: ";
    while (cin >> rec) //citas reci sve do EOF (na Windows Ctrl+Z)
        recenica.push_back(rec);
    //sada u vectoru recenica imas izdvojene reci
    for (size_t i = 0; i != recenica.size(); ++i)
        cout << recenica[i] << endl;
}

Kad uneses recenicu pritisnes Enter pa onda pritisnes Ctrl+Z pa opet Enter da zavrsis ciklus. Kontrola ciklusa mozes izvesti i na drugi nacin. Na primer mozes citati recenicu dok ne naigjes na tacku kao zadni karakter:
Code:

do {
        cin >> rec;
        recenica.push_back(rec);
    } while (rec[rec.size() - 1] != '.');