Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    [c++]conversione maiuscolo, libreria string.h

    ciao a tutti,
    volevo sapere se esiste una funzione già pronta nella classe string.h che mi permetta di convertire una data stringa in maiuscolo o minuscolo; ho provato a guardare qua
    ma non ho trovato niente che fa al caso mio..mm..forse non ho cercato bene?!grazie.
    p.s NON sto utilizzando le stringhe del c.

  2. #2
    Ciao

    devi far riferimento alla libreria cctype (ctype.h)

    Puoi notare le funzioni tolower e toupper.

  3. #3

    Re: [c++]conversione maiuscolo, libreria string.h

    Originariamente inviato da cleaner
    p.s NON sto utilizzando le stringhe del c.
    E allora perché usi string.h? Le stringhe C++ sono in <string>.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    sorry ho scritto una cavolata..uso <string>
    infatti se faccio:
    string a;
    a= tolower(a);

    non funzia ^^

  5. #5
    codice:
    #include <iostream>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    int main()
    	{
    		string s = "Ciao Mondo!";
    		transform(s.begin(), s.end(), s.begin(), toupper);
    		cout << s << endl;
    		transform(s.begin(), s.end(), s.begin(), tolower);
    		cout << s << endl;
    	}
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  6. #6
    codice:
    #include <iostream>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    namespace is {
    
       void upper(string& s);
       void lower(string& s);
    
    };
    
    int main()
    	{
    		string s = "Ciao Mondo!";
    		is::upper(s);
    		cout << s << endl;
    		is::lower(s);
    		cout << s << endl;
    	}
    
    void is::upper(string& s){
    
       transform(s.begin(), s.end(), s.begin(), toupper);
    
    }
    
    void is::lower(string& s){
    
       transform(s.begin(), s.end(), s.begin(), tolower);
    
    }
    Fa la stessa cosa di pallinopinco, ma così non devi riscriverti ogni volta la transform.
    Spero sia giusto

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    no, sono sbagliati entrambi per lo stesso errore in fase di compilazione:

    /*****/*****/****/***//main.cpp|15|error: no matching function for call to ‘transform(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, <unresolved overloaded function type>)’|


    lo da su questa riga..
    codice:
    transform(s.begin(), s.end(), s.begin(), toupper);
    così è corretta:
    codice:
    string s = "CIAO MONDO!";
    		transform( s.begin(),s.end(), s.begin(),(int(*)(int)) tolower );
            cout << s;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.