§ 9. Радковыя велічыні
9.3. Пошук у радку
Сучасныя камп’ютарныя ўстройствы дазваляюць дастаткова хутка ажыццяўляць пошук у тэксце, выкарыстоўваючы для гэтага розныя алгарытмы. Мовы праграміравання даюць для алгарытмаў шырокі набор функцый для работы з тэкстам. У класе string рэалізавана некалькі розных функцый, якія дазваляюць ажыццяўляць пошук сімвала ці падрадка (часткі радка) у радку. У якасці выніку атрымліваем нумар першага ўваходжання шуканага ўзору ці значэнне –1, калі ўзор не знойдзены. Значэнне –1 пошукавыя функцыі вяртаюць толькі для кампілятара MinGW. Універсальным значэннем, якое вяртаецца, з’яўляецца канстанта string::npos. Функцыі могуць ажыццяўляць прагляд сімвалаў злева направа ці справа налева. Некаторыя з функцый прадстаўлены ў табліцы:
Больш падрабязна з функцыямі для работы з радкамі можна азнаёміцца ў дадатку. У прыкладзе 9.6. паказана, як ужываць дадзеныя функцыі. Прыклад 9.7. Напісаць праграму, якая ўводзіць слова, а затым выводзіць яго па адным сімвале ў радку. Этапы выканання задання I. Зыходныя даныя: пераменная s — зыходнае слова. II. Вынік: слова на экране, кожны сімвал у асобным радку. III. Алгарытм рашэння задачы. 1. Уводзім зыходныя даныя. IV. Апісанне пераменных: s – string, n – int. Прыклад 9.8. Напісаць праграму, якая выводзіць на экран апошні сімвал уведзенага слова і вызначае, ці сустракаецца гэты сімвал у слове яшчэ раз. Калі сустракаецца, то праграма выводзіць індэкс гэтага сімвала. Этапы выканання задання I. Зыходныя даныя: пераменная s — уведзенае слова. II. Вынік: апошні сімвал у слове і адпаведнае паведамленне: сустракаецца ці не сустракаецца. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. |
Мова С++ з’яўляецца аб’ектна-арыентаванай мовай. Тып даных string не з’яўляецца часткай мовы С++, а рэалізаваны як шаблонны клас, які ўваходзіць у стандартную бібліятэку STL. З паняццем класа вы пазнаёміцеся пазней. Пры апісанні класа вызначаецца не толькі спосаб захоўвання даных, але і метады апрацоўкі гэтых даных. Метады рэалізаваны ў выглядзе функцый, доступ да якіх мае любая пераменная, якая з’яўляецца аб’ектам дадзенага класа. Для выкліку функцыі яе імя запісваюць пасля імя пераменнай, раздзяляючы іх кропкай. Напрыклад: s.length(), s.find('*') і інш. У акне рэдактара кода спіс функцый, якія належаць да пераменнай тыпу string, можа адкрывацца, калі пасля імя пераменнай паставілі кропку. Пасля чаго функцыю можна выбраць са спіса. Для таго каб спіс функцый з’явіўся ў Code::Bloks, трэба прапісаць дадатковую прастору імёнаў: using namespace std::__cxx11; Прыклад 9.6. Прыклады выкарыстання функцый.
Прыклад 9.7. V. Праграма:
VI. Тэсціраванне. Прыклад 9.8. V. Праграма:
IV. Тэсціраванне. |