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

ตัวดำเนินการ match_results[] ใน C ++ STL


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของตัวดำเนินการ match_results '[ ]' ใน C++ STL

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

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

ตัวดำเนินการ match_results คืออะไร '[ ]'

ตัวดำเนินการ Match_results [] เป็นตัวดำเนินการอ้างอิงซึ่งใช้เพื่ออ้างถึงตำแหน่งที่ i ของ match_results โดยตรง โอเปอเรเตอร์ [] ส่งกลับตำแหน่งการจับคู่ที่ i ของอ็อบเจ็กต์ที่เกี่ยวข้อง โอเปอเรเตอร์นี้มีประโยชน์เมื่อเราต้องเข้าถึงองค์ประกอบโดยตรงด้วยตำแหน่งที่ตรงกันโดยเริ่มจากศูนย์

ไวยากรณ์

match_results1[int i];

พารามิเตอร์

โอเปอเรเตอร์นี้รับ 1 พารามิเตอร์ของประเภทอินทิกรัล นั่นคือองค์ประกอบที่เราต้องการเข้าถึง

คืนค่า

ฟังก์ชันนี้จะคืนค่าการอ้างอิงไปยังตำแหน่งที่ i ของผลการแข่งขัน

ตัวอย่าง

Input: string str = "TutorialsPoint";
   regex R("(Tutorials)(.*)");
   smatch Mat;
   regex_match(str, Mat, R);
   Mat[0];
Output: TutorialsPoint

ตัวอย่าง

#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 str = "Tutorials Point";
   regex R("(Tutorials)(Point)(.*)");
   smatch Mat;
   regex_match(str, Mat, R);
   int len = 0;
   string S;
   for(int i = 1; i < Mat.size(); i++) {
      if (Mat.length(i) > len) {
         str = Mat[i];
         len = Mat.length(i);
      }
   }
   cout<<"Matching length is : " << len<< endl;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Matching length is : 0