Konvertere en streng til små bokstaver

C++:
Konvertere en streng til små bokstaver

How to:

Her er den kjappe metoden for å endre store bokstaver til små i C++:

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

int main() {
    std::string tekst = "Hei Verden!";
    std::transform(tekst.begin(), tekst.end(), tekst.begin(), 
                   [](unsigned char c){ return std::tolower(c); });
    
    std::cout << tekst << std::endl; // Output: hei verden!
    return 0;
}

Dette bruker <algorithm> biblioteket for å tranformere hver karakter ved hjelp av std::tolower.

Deep Dive

Før C++11, kunne man bruke løkker, C-funksjoner eller egne implementasjoner for å oppnå det samme. Fra C++11 og fremover gir standardbiblioteket rikere funksjonalitet for slike oppgaver.

Alternativer inkluderer å bruke <cctype> funksjoner som tolower() per karakter i en for-loop:

for (auto &c : tekst) {
    c = tolower(c);
}

Når vi snakker om implementasjonsdetaljer, er det verd å merke seg at std::tolower er lokaliseringssensitiv, som betyr at den baserer seg på programmet sitt innstilte lokalitetssystem. For ASCII-tegn, er dette vanligvis ikke en bekymring. Men for utvidede ASCII-sett eller Unicode-tegn, kan dette bli komplekst.

std::transform og std::tolower er ofte brukt fordi de er enkle, rett-til-punktet løsninger, men de kan ha begrensninger med unicode eller multibyte tegnsett hvor en mer robust løsning som ICU (International Components for Unicode) kan være mer hensiktsmessig.

See Also