Oppure

Loading
14/12/10 16:32
carmelolg
Nella libreria #include<string>

esiste una funzione che divide la stringa in più parole?
Proprio come fa strtok con i char* ma purtroppo strtok non riconosce una string.
aaa
14/12/10 16:54
prova a passare <stringa>.c_str() come parametro alla strtok
14/12/10 17:34
carmelolg
Mi dice che la conversione non è valida
aaa
14/12/10 19:08
lorenzo
Non funziona perché la strtok vuole come parametro un char * mentre la c_str() ritorna un const char *.

Devi fare un cast:


strtok(const_cast<char *>(stringa.c_str()), ... );

aaa
15/12/10 11:49
Postato originariamente da lorenzo:

Non funziona perché la strtok vuole come parametro un char * mentre la c_str() ritorna un const char *.

Devi fare un cast:


strtok(const_cast<char *>(stringa.c_str()), ... );



giusto :rotfl:
15/12/10 17:27
carmelolg
string *puntatore;
puntatore = strtok(const_cast<char *>(str.c_str()) , " ";);
while(puntatore!=NULL)
{

puntatore = strtok(NULL, " ";);
}

Purtroppo invece il compilatore mi da lo stesso errore:
cannot convert `char*' to `std::string*' in assignment

Cosa posso fare?
aaa
15/12/10 17:29
carmelolg
L'errore è che il puntatore deve essere char* giusto?
aaa
15/12/10 18:52
lorenzo
l'errore è

string *puntatore;

La strtok ritorna un char *, non un std::string.
Dovrai quindi fare:


char *puntatore = NULL;
puntatore = strtok(const_cast<char *>(str.c_str()) , " "); 
while(puntatore!=NULL) 
{ 
                                               
      puntatore = strtok(NULL, " "); 
}



Non puoi utilizzare la classe string come risultato di una strtok.
aaa