ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน match_results::length() ใน C++ STL
match_results ใน C++ STL คืออะไร
std::match_results เป็นคลาสที่มีลักษณะเหมือนคอนเทนเนอร์พิเศษ ซึ่งใช้เพื่อเก็บคอลเลกชันของลำดับอักขระที่ตรงกัน ในคลาสคอนเทนเนอร์นี้ การดำเนินการจับคู่ regex จะค้นหารายการที่ตรงกันของลำดับเป้าหมาย
match_results::length() คืออะไร
ฟังก์ชัน match_results::length() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว
ไวยากรณ์
smatch_name.length(unsigned int num);
พารามิเตอร์
ฟังก์ชันนี้ยอมรับพารามิเตอร์หนึ่งตัวซึ่งเป็นหมายเลขที่ตรงกันซึ่งควรน้อยกว่าขนาดของคอนเทนเนอร์ การจับคู่หมายเลข 0 แสดงถึงนิพจน์การจับคู่ทั้งหมด
คืนค่า
ฟังก์ชันนี้คืนค่าจำนวนเต็มที่ไม่ได้ลงนามของจำนวนการจับคู่ในวัตถุ
ตัวอย่าง
Input: std::smatch; smatch.length(0); Output: 0
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
int main() {
string str = "TutorialsPoint";
regex R("(Tutorials)(.*)");
smatch Mat;
regex_match(str, Mat, R);
for (int i = 0; i < Mat.size(); i++) {
cout<<"Match is : " << Mat[i]<< endl;
}
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Match is : TutorialsPoint Match is : Tutorials Match is : Point
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
int main() {
string sr = "Tutorials Point";
regex Re("(Tutorials)(.*)");
smatch Mat;
regex_match(sr, Mat, Re);
int len = 0;
string str;
for (int i = 1; i < Mat.size(); i++) {
if (Mat.length(i) > len) {
str = Mat[i];
len = Mat.length(i);
}
}
cout<<"Match length is of: " << len;
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Match length is of: 9