Ce face std::toupper
std::toupper('a') returnează 'A', iar std::tolower('A') returnează 'a'. Caracterele care nu sunt litere (cifre, spații, semne) sunt returnate neschimbate.
Rezultatul este int, așa că îl convertești înapoi la char. Pentru un șir întreg, aplici funcția pe fiecare caracter, de obicei cu o buclă sau cu std::transform.
Ca toate funcțiile din <cctype>, lucrează pe un octet: „ă” nu devine „Ă”, iar textul rămâne neschimbat la diacritice.
Parametri
| Parametru | Descriere |
|---|---|
c |
Caracterul, convertit la unsigned char. |
Ce returnează
Caracterul transformat, ca int.
Exemple
Exemplul 1: Un șir în majuscule și în minuscule
#include <cctype>
#include <iostream>
#include <string>
std::string majuscule(std::string s) {
for (char& c : s) {
c = static_cast<char>(std::toupper(static_cast<unsigned char>(c)));
}
return s;
}
std::string minuscule(std::string s) {
for (char& c : s) {
c = static_cast<char>(std::tolower(static_cast<unsigned char>(c)));
}
return s;
}
int main() {
std::cout << majuscule("Cluj-Napoca 2026") << '\n';
std::cout << minuscule("FACTURA.PDF") << '\n';
std::cout << majuscule("Brașov") << " (ș rămâne mic)\n";
}
Rezultat
CLUJ-NAPOCA 2026
factura.pdf
BRAșOV (ș rămâne mic)
Exemplul 2: Comparare fără să conteze literele mari
#include <cctype>
#include <iostream>
#include <string>
bool egale_ignora_mari(const std::string& a, const std::string& b) {
if (a.size() != b.size()) return false;
for (std::size_t i = 0; i < a.size(); ++i) {
if (std::tolower(static_cast<unsigned char>(a[i])) != std::tolower(static_cast<unsigned char>(b[i]))) {
return false;
}
}
return true;
}
int main() {
std::cout << std::boolalpha << egale_ignora_mari("poza.JPG", "POZA.jpg") << '\n';
std::cout << egale_ignora_mari("Ana", "Ane") << '\n';
}
Rezultat
true
false
Greșeli frecvente
- Afișezi direct rezultatul:
std::cout << std::toupper('a')scrie65, pentru că rezultatul esteint. Convertește-l lachar. - Te aștepți ca „ș” să devină „Ș”: funcțiile nu lucrează cu caractere UTF-8 de mai mulți octeți. Pentru text internațional e nevoie de o bibliotecă precum ICU.
Comenzi înrudite
std::isalpha: Verifică tipul unui caracter: literă, cifră, spațiu, majusculă, minusculă sau punctuație.std::string: Șir de caractere care își gestionează singur memoria; atenție, lucrează cu octeți, nu cu litere.std::string::compare: Compară două șiruri și returnează un număr negativ, zero sau pozitiv, ca la sortare.