สตริง C ++ ประกอบด้วยสตริงย่อย

String C Prakxb Dwy String Yxy



ใน C++ เรามีชนิดข้อมูลสตริงและสามารถใช้ฟังก์ชันต่างๆ เพื่อทำงานต่างๆ กับสตริงได้ เราสามารถตรวจสอบได้ว่ามีสตริงย่อยอยู่ภายในสตริงต้นฉบับหรือไม่ นอกจากนี้เรายังสามารถพูดได้ว่า 'สตริงประกอบด้วยสตริงย่อย' ในคู่มือนี้ เราจะเรียนรู้เทคนิคที่ช่วยเราในการค้นหา 'สตริงมีสตริงย่อย' ฟังก์ชัน “find()” และ “strstr()” ช่วยเราในการทำงานนี้ในการเขียนโปรแกรม C++

ตัวอย่างที่ 1:

“iostream” และ “string” เป็นไฟล์ส่วนหัวที่รวมอยู่ที่นี่เนื่องจากเราต้องทำงานกับสตริงและจำเป็นต้องอินพุตหรือเอาต์พุตข้อมูลด้วย ดังนั้นเราจึงต้องรวมไฟล์ส่วนหัวเหล่านี้ไว้ที่นี่ หลังจากนี้ เราจะรวม 'namespace std' ไว้ด้วยความช่วยเหลือของคีย์เวิร์ด 'using' ดังนั้นเราจึงไม่จำเป็นต้องใส่ 'std' นี้พร้อมกับฟังก์ชันทั้งหมดแยกกันในโค้ดของเรา จากนั้นฟังก์ชัน 'main()' จะถูกเรียกใช้ที่นี่







ตอนนี้เราประกาศสตริง “str_1” และกำหนดข้อมูลสตริงบางส่วนให้กับตัวแปรนี้ จากนั้น เรายังเริ่มต้นตัวแปรอีกตัวหนึ่งชื่อ “str_2” ของประเภทข้อมูล “string” และกำหนด “like” ให้กับตัวแปร “str_2” นี้ ด้านล่างนี้ เราใช้คีย์เวิร์ด “bool” เพื่อให้ผลลัพธ์จริงหรือเท็จ เราเริ่มต้น 'stringHasStr' ด้วยประเภทข้อมูล 'bool' นี้ และใช้ฟังก์ชัน 'find()' สิ่งนี้จะค้นหา 'สตริงมีสตริงย่อย' “str_1” เป็นสตริงที่สมบูรณ์ และ “str_2” เป็นสตริงย่อย



ที่นี่ เรายังเพิ่มคีย์เวิร์ด 'npos' ซึ่งใช้เพื่อแสดงว่าสตริงนี้ไม่มีรายการที่ตรงกัน จะตรวจสอบว่าสตริงมีสตริงย่อยหรือไม่และเก็บผลลัพธ์ไว้ในตัวแปรบูล 'stringHasStr' นี้



จากนั้น เราไปต่อที่เงื่อนไข “if” และส่งผ่านตัวแปร “stringHasStr” ไปยังเงื่อนไข “if” นี้ หากผลลัพธ์ที่เก็บไว้ในตัวแปรบูลนี้เป็น 'จริง' จะใช้คำสั่งหลังเงื่อนไข 'if' โดยที่เราใช้ 'cout' และแสดงสตริงที่พบที่นี่ แต่หากผลลัพธ์ 'เท็จ' ถูกเก็บไว้ในตัวแปรบูลนี้ ส่วนอื่น ๆ จะถูกนำมาใช้และแสดงว่าไม่พบสตริงที่นี่





รหัส 1:

#รวม
#รวม

ใช้เนมสเปซมาตรฐาน;
int หลัก ( )
{
สตริง str_1 = 'ฉันชอบภาษาการเขียนโปรแกรม C++' ;
สตริง str_2 = 'ชอบ' ;
บูล stringHasStr = str_1.find ( str_2 ) ! = สตริง::npos;
ถ้า ( สตริงHasStr ) {
ศาล << 'เราพบสตริงที่นี่ซึ่งก็คือ' << str_2 << จบ;
}
อื่น {
ศาล << “ไม่พบสตริง” << จบ;
}
กลับ 0 ;
}



เอาท์พุท:

เอาต์พุตที่กำหนดนี้ทำให้สตริงมีสตริงย่อยและแสดงไว้ที่นี่ เราตรวจสอบสิ่งนี้โดยใช้ฟังก์ชัน “find()”

ตัวอย่างที่ 2:

เรารวมไฟล์ส่วนหัวสามไฟล์ที่นี่ ได้แก่ “iostream”, “string” และ “cstring” จากนั้นเรียกใช้ 'main()' หลังจากวาง 'namespace std' ขณะนี้มีการประกาศสตริง 'new_str' และกำหนดข้อมูลสตริงบางส่วนแล้ว

ต่อไป เราจะเริ่มต้นตัวแปรตัวที่สองของประเภทข้อมูล 'string' ที่เรียกว่า 'sub_str' และให้ค่าเป็น 'มาก' จากนั้นเราวาง 'const char*' ดังนั้นการเปลี่ยนค่าของพอยน์เตอร์ให้ชี้ไปยังตำแหน่งอื่นในหน่วยความจำจึงเป็นไปไม่ได้ เราประกาศตัวแปร “FindingStr” เป็นตัวชี้ “const char*” ที่นี่ เราเริ่มต้นด้วยเมธอด “strstr()” และส่งผ่านทั้งสองสตริงพร้อมกับฟังก์ชัน “c_str()” ที่แปลงสตริงให้เป็นอาร์เรย์อักขระที่ลงท้ายด้วยค่าว่าง เมธอด “strstr()” นี้ช่วยในการตรวจสอบว่าสตริง “new_str” มีสตริงย่อย “sub_str” หรือไม่ จากนั้น เรามี 'if' ซึ่งเราจะเพิ่ม 'FindingStr' หากพบสตริงย่อยในต้นฉบับ คำสั่งหลัง 'if' จะถูกดำเนินการโดยที่เราใช้ 'cout' หากไม่พบสตริงย่อย สตริงย่อยจะย้ายโดยตรงไปยังส่วน 'else' และพิมพ์ผลลัพธ์ที่วางอยู่หลังส่วน 'else'

รหัส 2:

#รวม
#รวม
#รวม

ใช้เนมสเปซมาตรฐาน;
int หลัก ( )
{
สตริง new_str = 'ข้างนอกฝนตกและอากาศดีมาก' ;
สตริง sub_str = 'มาก' ;
ถ่าน const * FindingStr = strstr ( new_str.c_str ( ) , sub_str.c_str ( ) ) ;
ถ้า ( FindStr ) {
ศาล << 'เราพบสตริงและสตริงคือ: ' << sub_str << จบ;
}
อื่น {
ศาล << 'ไม่พบสตริง' << จบ;
}
กลับ 0 ;
}

เอาท์พุท:

เราอาจสังเกตเห็นว่าสตริงที่กำหนดมีสตริงย่อยตามที่แสดงคำสั่งที่เราเพิ่มหลัง 'if' และพิมพ์สตริงย่อยที่นี่ เราตรวจสอบสิ่งนี้โดยใช้ฟังก์ชัน “strstr()”

ตัวอย่างที่ 3:

เราเริ่มต้นตัวแปรสตริงสองตัวที่นี่: “myNewStr” และ “mySubStr” จากนั้น เราจะกำหนดข้อมูลสตริงและประกาศตัวแปรจำนวนเต็มสองตัว: “posOfStr” และ “indexOfStr”

ด้านล่างนี้ เราใช้ลูป “ While()” และกำหนดตัวแปรฟังก์ชัน “find()” ให้กับตัวแปร “indexOfStr” ภายในลูป “ While()” นี้ เราส่งตัวแปรสองตัวไปยังฟังก์ชัน “find()” ซึ่งก็คือ “mySubStr” และ “posOfStr” จากนั้นเราวางคีย์เวิร์ด “npos” ซึ่งจะตรวจสอบว่าผลลัพธ์ของฟังก์ชัน “find” ไม่เท่ากับ “npos” หลังจากนี้ เราใช้ 'cout' ซึ่งจะเพิ่มค่าดัชนีทีละหนึ่งและเก็บไว้ในตัวแปร 'posOfStr'

รหัส 3:

#รวม
#รวม

ใช้เนมสเปซมาตรฐาน;
int หลัก ( ) {
สตริง myNewStr = “เรากำลังหาเชือกอยู่ที่นี่” ;
สตริง mySubStr = 'สตริง' ;
int posOfStr = 0 ;
int ดัชนี OfStr;
ในขณะที่ ( ( indexOfStr = myNewStr.find ( mySubStr, posOfStr ) ) ! = สตริง::npos ) {
ศาล << 'สตริงย่อยคือ' << ''' << mySubStr << ''' << ' พบได้ที่หมายเลขดัชนี : ' << ดัชนีของStr << จบ;
posOfStr = ดัชนีของStr + 1 ;
}
กลับ 0 ;
}

เอาท์พุท:

ที่นี่แสดงให้เห็นว่าสตริงที่กำหนดมีสตริงย่อยและหมายเลขดัชนีของสตริงนี้คือ '19' ซึ่งจะแสดงในผลลัพธ์นี้ด้วย

ตัวอย่างที่ 4:

ในโค้ดนี้ เราได้รวมไฟล์ส่วนหัว “bits/stdc++.h” ไว้ด้วย ตอนนี้เราไม่จำเป็นต้องรวมไฟล์ส่วนหัวอื่น ๆ เนื่องจากมีไลบรารีที่จำเป็นทั้งหมด หลังจากเรียกใช้ 'main()' เราจะเริ่มต้นตัวแปร 'org_str' และ 'sub_str' ของประเภทข้อมูล 'string' จากนั้นเราเพิ่มเงื่อนไข 'if' ซึ่งเราใช้ฟังก์ชัน 'strstr()' ฟังก์ชันนี้จะค้นหาเพื่อดูว่าสตริงที่กำหนดมีสตริงย่อยที่ต้องการหรือไม่ จากนั้นเราเพิ่มคำสั่ง 'cout' เพื่อพิมพ์ว่าพบสตริงย่อยที่นี่ จากนั้น เรายังใส่ส่วน 'else' ซึ่งจะดำเนินการเฉพาะเมื่อเงื่อนไข 'if' ไม่เป็นที่พอใจหรือไม่พบสตริงย่อยในสตริง

หลังจากนี้ เราจะประกาศตัวแปร “sub_str2” และกำหนดข้อมูลสตริงที่นี่ จากนั้นจึงแทรกเงื่อนไข 'if' และใช้ฟังก์ชัน 'strstr()' เมธอดนี้จะค้นหาว่าสตริงที่ให้มามีสตริงย่อยที่ร้องขอหรือไม่ จากนั้นผลลัพธ์จะถูกพิมพ์ที่นี่โดยใช้คำสั่ง 'cout' นอกจากนี้เรายังรวมส่วน 'else' ที่จะทำงานเฉพาะในกรณีที่ไม่ตรงตามเงื่อนไข 'if' หรือหากไม่พบสตริงย่อยในสตริง

รหัส 4:

#รวม
ใช้เนมสเปซมาตรฐาน;
int หลัก ( ) {
สตริง org_str = “ภาษาการเขียนโปรแกรม C++” ;
สตริง sub_str = 'โปรแกรม' ;
ถ้า ( strstr ( org_str.c_str ( ) ,sub_str.c_str ( ) ) )
{
ศาล << “สายย่อยที่นี่คือ” << ''' << sub_str << ''' << ' มีอยู่ใน ' << org_str << จบ;
}
อื่น {
ศาล << 'สตริงย่อยไม่มีอยู่ในสตริง' << จบ;
}
สตริง sub_str2 = 'ชวา' ;

ถ้า ( strstr ( org_str.c_str ( ) ,sub_str2.c_str ( ) ) )
{
ศาล << “สายย่อยที่นี่คือ” << ''' << sub_str2 << ''' << ' มีอยู่ใน ' << org_str << จบ;
}
อื่น {
ศาล << 'สตริงย่อยไม่มีอยู่ในสตริงนี้' << จบ;
}
กลับ 0 ;
}

เอาท์พุท:

ผลลัพธ์ของฟังก์ชัน “strstr()” รายการแรกแสดงว่าสตริงมีสตริงย่อย แต่ผลลัพธ์ของฟังก์ชัน “strstr()” รายการที่สองแสดงว่าไม่มีสตริงย่อยอยู่ในสตริง

บทสรุป

มีการตรวจสอบแนวคิดเรื่อง 'สตริงประกอบด้วยสตริงย่อย' อย่างละเอียดในคู่มือนี้ เราได้สำรวจสองวิธีที่ช่วยในการค้นหาว่า 'สตริงมีสตริงย่อย' หรือไม่ เราได้อธิบายฟังก์ชัน “find()” รวมถึงฟังก์ชัน “strstr()” ที่ C++ ให้ไว้ที่นี่ในคู่มือนี้สำหรับการทำงานนี้ เราสาธิตด้วยตัวอย่างที่ไม่ซ้ำใครซึ่งเราได้เรียนรู้วิธีใช้ฟังก์ชันเหล่านี้เพื่อตรวจสอบว่า 'สตริงมีสตริงย่อย' อยู่ในนั้นหรือไม่