แปลงสตริงเป็นตัวเล็ก

C++:
แปลงสตริงเป็นตัวเล็ก

วิธีทำ:

นี่คือวิธีที่คุณสามารถแปลงตัวอักษรตัวใหญ่ให้เป็นตัวอักษรตัวเล็กในภาษา C++:

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

int main() {
    std::string origText = "C++ makes me Shout!";
    std::string lowerText = origText;

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

    std::cout << "Original: " << origText << std::endl;
    std::cout << "Lowercase: " << lowerText << std::endl;
    
    return 0;
}

ผลลัพธ์:

Original: C++ makes me Shout!
Lowercase: c++ makes me shout!

ศึกษาลึกซึ้ง

ในอดีต ก่อนที่ std::transform และ lambda จะถูกนำมาใช้ ใครๆ ต้องวนลูปผ่านแต่ละอักขระและเปลี่ยนเป็นตัวพิมพ์เล็กด้วยตัวเอง — ซึ่งต้องใช้แรงงานมากขึ้น std::transform ร่วมกับ std::tolower มีประสิทธิภาพและมีโอกาสผิดพลาดน้อยกว่า อย่างไรก็ตาม ทราบว่า C++ มีวิธีอื่นอยู่มาก Mind the locale: พฤติกรรมของ std::tolower อาจแตกต่างกันไป หากโปรเจคของคุณต้องการใช้ Unicode ลองดูไลบรารีของบุคคลที่สามเช่น ICU ที่ถูกสร้างขึ้นสำหรับเวทีโลก

นอกจากนี้ยังควรกล่าวถึงการเพิ่มเติมของ C++20, std::ranges::transform, ซึ่งนำเสนอการแปลงตามช่วงข้อมูล, ทำให้ไวยากรณ์มีรสนิยมมากขึ้นและปฏิบัติตามปรัชญา ‘range’ ที่การเขียนโค้ดควรจะง่ายต่อการเข้าใจและมีโอกาสผิดพลาดน้อยลง

ในส่วนของรายละเอียดการประยุกต์ใช้งาน แต่ละอักขระมีค่า ASCII และความแตกต่างระหว่างตัวพิมพ์เล็กและตัวพิมพ์ใหญ่นั้นคงที่ การเปลี่ยนแปลงจะตรวจสอบค่าเหล่านี้เพื่อลดลง—โดยพื้นฐานแล้วเล่นเกมลดค่าเลข

ดูเพิ่มเติม

สำหรับคนที่คิดอยากทราบเพิ่มเติม:

ต้องการเข้าใจเกี่ยวกับ Unicode มากขึ้น? ลองดูโปรเจกต์ ICU: