C++:
การทำให้ตัวอักษรเป็นตัวพิมพ์ใหญ่ในสตริง
วิธีการ:
ใน C++ คุณสามารถทำให้สตริงมีตัวอักษรต้นเป็นตัวพิมพ์ใหญ่โดยใช้ไลบรารีมาตรฐาน โดยปราศจากความจำเป็นต้องใช้ไลบรารีของบุคคลที่สาม อย่างไรก็ตามสำหรับพฤติกรรมการทำให้ตัวพิมพ์ใหญ่ที่ซับซ้อนหรือเฉพาะเจาะจงมากขึ้น ไลบรารีเช่น Boost อาจช่วยได้มาก ด้านล่างนี้เป็นตัวอย่างที่แสดงทั้งสองวิธีการ
การใช้ไลบรารีมาตรฐานของ C++:
#include <iostream>
#include <cctype> // สำหรับ std::tolower และ std::toupper
#include <string>
std::string capitalizeString(const std::string& input) {
std::string result;
bool capitalizeNext = true;
for (char ch : input) {
if (std::isspace(ch)) {
capitalizeNext = true;
} else if (capitalizeNext) {
ch = std::toupper(ch);
capitalizeNext = false;
}
result += ch;
}
return result;
}
int main() {
std::string text = "hello world from c++";
std::string capitalizedText = capitalizeString(text);
std::cout << capitalizedText << std::endl; // ผลลัพธ์: "Hello World From C++"
}
การใช้ไลบรารี Boost:
สำหรับการจัดการสตริงขั้นสูงมากขึ้น รวมถึงการทำให้ตัวพิมพ์เป็นพิเศษที่ตระหนักถึง locale คุณอาจต้องการใช้ไลบรารี Boost String Algo
เริ่มแรก ตรวจสอบให้แน่ใจว่าคุณมีไลบรารี Boost ติดตั้งและปรับแต่งในโปรเจกต์ของคุณแล้ว จากนั้นคุณสามารถรวมหัวข้อที่จำเป็นและใช้คุณสมบัติของมันตามที่แสดงด้านล่าง
#include <boost/algorithm/string.hpp>
#include <iostream>
#include <string>
int main() {
std::string text = "hello world from c++";
std::string capitalizedText = text;
// ทำให้ตัวอักษรตัวแรกของแต่ละคำเป็นตัวใหญ่
boost::algorithm::to_lower(capitalizedText); // ทำให้แน่ใจว่าสตริงอยู่ในรูปตัวพิมพ์เล็ก
capitalizedText[0] = std::toupper(capitalizedText[0]); // ทำให้ตัวอักษรตัวแรกเป็นตัวใหญ่
for (std::size_t i = 1; i < capitalizedText.length(); ++i) {
if (isspace(capitalizedText[i - 1])) { // ทำให้ตัวพิมพ์ใหญ่หลังจากช่องว่าง
capitalizedText[i] = std::toupper(capitalizedText[i]);
}
}
std::cout << capitalizedText << std::endl; // ผลลัพธ์: "Hello World From C++"
}
ในกรณีนี้ Boost ทำให้บางงานการจัดการสตริงง่ายขึ้น แต่ยังคงต้องการวิธีการที่เฉพาะเจาะจงสำหรับการทำให้เป็นตัวพิมพ์ใหญ่อย่างแท้จริงเนื่องจากมันเสนอความสามารถในการเปลี่ยนแปลงและการแปลงเคสเป็นหลัก