Newsgroup: it.comp.lang.c++
Titolo: Confrontare uno spazio !

Ho un array di char contenente una frase !
Come faccio a sapere la posizione del prim ospazio !?

 Come faccio a sapere la posizione del prim ospazio !?
la posizione rispetto alla stringa o all' array? se è alla stringa devi fare
i+1
esempio:
int i;
char stringa[15] = "ciao bello";
for(i=0;i<15;i++)
{
if(stringa[i] == ' ');
break;
}
cout << "Il primo spazio si trova alla "<< i <<"° posizione dell'
array\n\n";
cout << "Il primo spazio si trova alla "<< i+1 <<"° posizione della
stringa\n\n";
ciao by JSMR
-- 
Esistono 10 tipi di persone al mondo, quelli che conoscono
il codice binario e quelli che non lo conoscono.

Usare strchr no, eh?
--- bye

 cout << "L'array non contiene spazi\n\n";
Ciao,
Nicola

> char * dove = std::find(stringa, stringa + 15, ' ');
Il problema di ciň č che tu non hai spiegato all'OP la magnificenza di tutto
ciň! (la magnificenza del for). E' come dire alle persone: cout << "stringa"
<< numero; Loro non capiscono che tutto ciň nasce da cose incredibili
nascoste dietro al cout e all'overloading dell'operatore << e lo vedono solo
come una strana printf con uno strano operatore... E magari pensano che <<
sia un nuovo operatore "magico" per unire cose.
Inoltre c'č un piccolissimo problema: questo comando non credo che conosca
il significato di "stringa C".
Quindi se faccio:
char stringa[15] = "ciao bello";
stringa[0] = 0;
non credo mi restituisca NULL; (questo č un esempio un po' estremo, ma per
esempio la stringa originale potrebbe venir sovrascritta da una stringa piů
piccola)
O c'č un overload per i char*?
--- bye

 piccola)
Neanche l'esempio originale gestisce i caratteri nulli.
Ciao,
Nicola

 *specifico* ed io l'ho riscritto in modo piu' comodo, ma equivalente.
Anche se logicamente posso essere in accordo, darei pero' ragione a
Massimiliano per quanto riguarda il fatto che l'OP potrebbe essere
fuorviato dalla find() se tentasse di usarla come una strchr.
Riassumo per l'OP:
per cercare un carattere in un array di caratteri terminato
da 0, oltre a fare banalmente un ciclo, si possono
usare due funzioni,
una, ereditata in qualche modo dal C, e' la
strchr(char *s, int c) che cerca la prima occorrenza
del carattere c in nell'array di caratteri s e restituisce il
puntatore alla prima occorrenza.
La strchr ha di buono che non devo specificare prima
la lunghezza della stringa, e che si ferma quando arriva in
fondo (allo 0) e se non trova il carattere restituisce un
puntatore nullo.
Alternativamente ti e' stata suggerita la std::find()
che invocata come
char * dove = std::find(stringa, stringa + Lungh_stringa, carattere);
ti trova il puntatore alla prima occorrenza del carattere.
Come e' stato notato da Massimiliano, la find e' una funzione
piuttosto generale e quindi non e' stata calibrata sulle stringhe
di caratteri terminate da 0. Quindi per invocare la find devi sapere
esattamente dove finisce la stringa, altrimenti, inserendo per
esempio la lunghezza massima e non quella corrente, la find potrebbe
"trovare" il carattere cercato in una posizione al di la' del 
terminatore 0, per effetto ad esempio di un precedente contenuto
dell'array.
ciao,
g.

 
Esatto la find e` una funzione molto generica e puo` essere usata
oltre che per cercare la prima occorrenza di un char in un array, 
anche per cercare un int in un array di int, una std::string in 
una std::list<std::string>, o un double in uno std::vector<double> etc. 
La stessa interfaccia per molti usi. Per chi vuole imparare e` 
decisamente piu` proficuo
Massimo

 decisamente piu` proficuo
Certo, se tu spingi l'OP a leggersi la documentazione della find č ottimo...
Peccato che invece il suggerimento fosse di tipo dogmatico: fa cosě e basta.
In questa maniera sembrava che la find fosse stata creata appositamente per
cercare stringhe.

 dell'array.
Pero' e' sempre possibile usare find come segue:
char * dove = std::find(stringa, stringa + std::strlen(stringa),
carattere);
E' un po' un peccato scorrere la stringa due volte, ma funziona.
Ciao,
Nicola

 cercare stringhe.
O Massimiliano! Che l'OP si riferisse a stringhe C e' una tua
supposizione! Lui ha parlato solo di array di caratteri!
Ciao,
Nicola