Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

match_results length() ใน C ++ STL


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน match_results::length() ใน C++ STL

match_results ใน C++ STL คืออะไร

std::match_results เป็นคลาสที่มีลักษณะเหมือนคอนเทนเนอร์พิเศษ ซึ่งใช้เพื่อเก็บคอลเลกชันของลำดับอักขระที่ตรงกัน ในคลาสคอนเทนเนอร์นี้ การดำเนินการจับคู่ regex จะค้นหารายการที่ตรงกันของลำดับเป้าหมาย

match_results::length() คืออะไร

ฟังก์ชัน match_results::length() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว length() ใช้เพื่อตรวจสอบความยาวของการแข่งขันที่ n ในวัตถุ match_results ที่เกี่ยวข้อง length() ยอมรับพารามิเตอร์ซึ่งเป็นตัวเลขที่ตรงกันซึ่งควรน้อยกว่า match_results::size() สำหรับตรวจสอบความยาวของการจับคู่ที่ n

ไวยากรณ์

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