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:
- C++ referentie voor
std::transform
: https://en.cppreference.com/w/cpp/algorithm/transform - C++ referentie voor
std::tolower
: https://en.cppreference.com/w/cpp/string/byte/tolower - Details over C++20’s
std::ranges
: https://en.cppreference.com/w/cpp/ranges
Honger naar Unicode begrip? Probeer het ICU Project:
- ICU Project: http://site.icu-project.org/home