הגדלת אותיות במחרוזת

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:

למניפולציה מתקדמת של מחרוזות, כולל הגדלת אות ראשונה תוך התחשבות באזור, ייתכן שתרצה להשתמש בספריית 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 מפשטת חלק ממשימות מניפולציית המחרוזת אך עדיין דורשת גישה מותאמת אישית להגדלה אמיתית מכיוון שהיא בעיקר מציעה פונקציונליות להמרה והעברה בין רישיות.