View Full Version : [C++]tolower
monkeys86
25-03-2008, 13:05
ciao so che è un problema da poco ma nn riesco lo stesso a risolverlo; abituato a usare il java che disponeva di mille funzioni, nn riesco a risolvere i problemi facili in c++; praticamente ho una stringa(dichiarata come stringa nn come array di char) e devo trasformarla in una serie di caratteri minuscoli
es: se ho Risotto deve diventare risotto....il tolower funziona solo se gli passo un char, esiste una funzione in grado di trasformare un'intera stringa?
wizard1993
25-03-2008, 13:18
string prova="QWERTY";
for(int i=0;i<prova.length();i++){
prova[i]=tolower(prova[i]);
}
monkeys86
25-03-2008, 13:23
funziona?? nn devo includere nessuna libreria di supporto?
tomminno
25-03-2008, 13:26
Così trasformi la stringa sovrascrivendola in C++
#include <algorithm>
string maiuscolo = "TUTTO MAIUSCOLO";
std::transform(maiuscolo.begin(), maiuscolo.end(), maiuscolo.begin(), tolower);
wizard1993
25-03-2008, 13:31
e pensi che il mio non faccia la stessa cosa?, inoltre non sfrutta nulla apparte la <iostream>
tomminno
25-03-2008, 13:37
e pensi che il mio non faccia la stessa cosa?, inoltre non sfrutta nulla apparte la <iostream>
Ho solo proposto un'alternativa. :mbe:
E comunque la tua soluzione non sfrutta <iostream>.
E poi perchè mai non sfruttare le potenzialità del linguaggio, quando ci sono?
wizard1993
25-03-2008, 13:39
Ho solo proposto un'alternativa. :mbe:
E comunque la tua soluzione non sfrutta <iostream>.
sarà io includo solo quella e il compilatore borland lo prende.
scusa se sono sembrato offensivo, non era assolutamente mi intenzione
monkeys86
25-03-2008, 14:18
okok grazie mille per le indicazioni andavano bene tutti e due, ma preferisco non usare la stl, comunque grazie lo stesso...ora però ho un altro problema; per leggere un file di testo io faccio cosi
ifstream i;
string parola;
i.open("Testo.txt");
while(i)
{
i>>parola;
cout<<parola;
}
perchè l'ultima parola del testo me la legge due volte???
wizard1993
25-03-2008, 14:22
scusa un secondo, io di solito faccio così
while(i>>parola){
// to do
}
tomminno
25-03-2008, 14:45
okok grazie mille per le indicazioni andavano bene tutti e due, ma preferisco non usare la stl,
Primo l'STL la stai usando comunque visto che string ne fa parte.
E poi perchè mai non usare una funzionalità che semplifica la vita?
Inoltre se al C++ togli l'STL ti rimane solamente la libreria C con l'aggiunta delle classi.
comunque grazie lo stesso...ora però ho un altro problema; per leggere un file di testo io faccio cosi
ifstream i;
string parola;
i.open("Testo.txt");
while(i)
{
i>>parola;
cout<<parola;
}
perchè l'ultima parola del testo me la legge due volte???
Ma non volevi evitare l'STL? ;)
Devi testare anche eof.
tomminno
25-03-2008, 14:47
sarà io includo solo quella e il compilatore borland lo prende.
scusa se sono sembrato offensivo, non era assolutamente mi intenzione
Il compilatore borland mi sa che fa un pò a modo suo, visto che string è definita in <string> e non ha niente a che vedere con <iostream> che serve appunto per l'inclusione degli stream per l'io.
wizard1993
25-03-2008, 14:56
Il compilatore borland mi sa che fa un pò a modo suo, visto che string è definita in <string> e non ha niente a che vedere con <iostream> che serve appunto per l'inclusione degli stream per l'io.
effettivamente me l'hanno sempre detto che il borland fa un po i cavoli suoi, bho
monkeys86
25-03-2008, 16:51
no mi son spiegato male sono io che non volevo usare l'stl ma non sapevo neanke che la classe string ne facesse parte....cmq grazie dei consigli ho risolto
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.