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
כדי לחתוך את הזנב הלא רצוי.
ראה גם
- הפניה ל־C++
std::remove
: cppreference.com - עוד על עיבוד
std::string
: cplusplus.com