Een string omzetten naar kleine letters

C++:
Een string omzetten naar kleine letters

Hoe:

Hier is hoe je in C++ verschillen in hoofdletters platmaakt, waarbij hoofdletters buigen voor de kleine:

#include <iostream>
#include <string>
#include <algorithm>

int main() {
    std::string origText = "C++ maakt me Aan Het Schreeuwen!";
    std::string lowerText = origText;

    std::transform(origText.begin(), origText.end(), lowerText.begin(), 
                   [](unsigned char c) { return std::tolower(c); });

    std::cout << "Origineel: " << origText << std::endl;
    std::cout << "Kleine letters: " << lowerText << std::endl;
    
    return 0;
}

Output:

Origineel: C++ maakt me Aan Het Schreeuwen!
Kleine letters: c++ maakt me aan het schreeuwen!

Diepere Duik

In de oude dagen, voordat std::transform en lambdas op de scene verschenen, zou men door elk karakter lusen en het handmatig naar een kleine letter veranderen – een beetje meer handwerk. std::transform met std::tolower is efficiënt en minder foutgevoelig, hoewel, wetende C++, andere manieren bestaan. Let op de locale: het gedrag van std::tolower kan variëren. Als jouw project Unicode schreeuwt, bekijk dan externe bibliotheken zoals ICU die gebouwd zijn voor een wereldwijd podium.

Het is ook het vermelden waard de toevoeging van C++20, std::ranges::transform, die range-gebaseerde transformaties introduceert, de syntaxis oppept en zich houdt aan de ‘range’-filosofie dat coderen intuïtiever en minder foutgevoelig moet zijn.

Wat betreft implementatiedetails, elk karakter heeft een ASCII-waarde, en het verschil tussen kleine letters en hoofdletters is consistent. Transformaties gluren naar deze waarden om ze te verlagen—basically spelen ze numerieke limbo.

Zie Ook

Voor die nieuwsgierige katten die hongerig zijn voor meer:

Honger naar Unicode begrip? Probeer het ICU Project: