הסרת מרכאות ממחרוזת

C++:
הסרת מרכאות ממחרוזת

איך לעשות:

הנה דרך פשוטה להיפטר מאותם ציטוטים ב־C++:

#include <iostream>
#include <algorithm>

std::string remove_quotes(std::string input) {
    input.erase(std::remove(input.begin(), input.end(), '\"'), input.end());
    input.erase(std::remove(input.begin(), input.end(), '\''), input.end());
    return input;
}

int main() {
    std::string original = R"("Hello, 'World'!")";
    std::string no_quotes = remove_quotes(original);
    std::cout << no_quotes << std::endl;
    return 0;
}

הריצו את זה, ותקבלו:

Hello, World!

הנה! הציטוטים נעלמו.

צלילה עמוקה

ציטוטים היו מטרד טקסטואלי מאז ראשית המחשוב. בעבר, הייתם רואים תכניתנים שעבדו בקשיים על לולאות דרך כל תו כדי לסנן את אותם ציטוטים. כיום, יש לנו את std::remove בספריית התבניות הסטנדרטית (STL) כדי לעשות את העבודה הכבדה.

אלטרנטיבות? בטח! תוכלו להשתמש בביטויים רגולריים עם std::regex כדי לזהות ציטוטים, אבל זה קצת כמו להשתמש בפטיש לפצח אגוז - חזק, אך יכול להיות נדבק למשימות פשוטות. לאלה שמעדיפים גרסאות C++ חדישות יותר, יתכן שתרצו לנסות את std::string_view לגישות שאינן משנות.

מבחינת יישום, זכרו ש-std::remove לא באמת מסיר אלמנטים מהמכולה; הוא מעביר אלמנטים שלא נמחקו קדימה ומחזיר מצביע לאחר הקצה החדש של הטווח. זו הסיבה שאנו זקוקים לשיטת ה־erase כדי לחתוך את הזנב הלא רצוי.

ראה גם