สวัสดีและยินดีต้อนรับ. ในการบรรยายนี้ ฉันต้องการพูดคุยเกี่ยวกับการแปลงสตริง
ฟังก์ชันสตริงเพิ่มเติม
เป็นเรื่องปกติมากที่จะแปลงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยเฉพาะ
หากคุณต้องการสร้างสตริงอักขระตัวพิมพ์ใหญ่ทั้งหมด โชคดีที่มีฟังก์ชันตัวบนสองตัวที่แปลงจากตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่และฟังก์ชันล่างสองตัวที่แปลงจากตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็ก
ตัวพิมพ์เล็กไปบน บนลงล่าง
ฟังก์ชันทั้งสองจะคืนค่าอักขระที่แปลงแล้วหรืออักขระตัวเดียวกันสำหรับอักขระที่อยู่ในตัวพิมพ์ที่ถูกต้องอยู่แล้วหรือไม่สามารถแปลงได้
เช่น อักขระเครื่องหมายวรรคตอน หากคุณไม่สามารถแปลงได้
นี่คือวิธีที่คุณสามารถแปลงสตริงเป็นตัวพิมพ์ใหญ่ได้
โปรดจำไว้ว่าสิ่งเหล่านี้ถูกใช้จริงตามตัวอักษร
ดังนั้นถ้าคุณมีบัฟเฟอร์ที่เป็นอาร์เรย์ของอักขระ
คุณจะต้องผ่านแต่ละองค์ประกอบในบัฟเฟอร์แล้วทำสองตัวบนบนอักขระนั้น
ในที่นี้ เรากำลังดำเนินการผ่านแต่ละองค์ประกอบในอาร์เรย์อักขระบัฟเฟอร์
และเราส่งผ่านไปยังสองวิธีบน
และนั่นจะส่งคืนตัวละคร นั่นคือตัวพิมพ์ใหญ่ และเราจะกำหนดมันให้กับบัฟของเราด้วย
เราจะทำอย่างนั้นจนกว่าเราจะพบอักขระว่าง
นี่คือสี่ประโยคที่มีเพียงบรรทัดเดียว
สิ่งนี้จะแปลงสตริงทั้งหมดเป็นตัวพิมพ์ใหญ่ของอัตราบัฟเฟอร์โดยการก้าวผ่านสตริงทีละอักขระ
การวนซ้ำจะหยุดเมื่อถึงอักขระสิ้นสุดสตริง เครื่องหมายแบ็กสแลชศูนย์
ตัวแสดงของประเภท char อยู่ที่นั่นเนื่องจากผลตอบแทนบนของประเภท int สองครั้งซึ่งเป็นค่า
ASCII และเพียงแค่แปลง
และคุณจะทำแบบเดียวกันถ้าคุณต้องการแปลงเป็นตัวพิมพ์เล็ก
ง่ายมากที่จะใช้ฟังก์ชันการแปลงตัวพิมพ์
ดังนั้น คุณสามารถใช้ฟังก์ชัน two upper ร่วมกับฟังก์ชัน strstr เพื่อค้นหาว่าสตริงหนึ่งเกิดขึ้นในอีกสตริงหนึ่งโดยไม่สนใจกรณีนี้หรือไม่
ลองดูตัวอย่างที่ทำแบบนั้นกัน
ที่นี่เรามีอาร์เรย์อักขระสองตัวคือข้อความและสตริงย่อย
ข้อความมีขนาดร้อย สตริงย่อยมีขนาดสี่สิบ
เราขอให้ผู้ใช้ป้อนสตริงที่จะค้นหา น้อยกว่าร้อยอักขระ
เราเข้าใจแล้ว เราเก็บไว้ในข้อความ
จากนั้นเราป้อนสตริงที่พวกเขาต้องการค้นหาโดยใช้ strstr จากนั้นจึงป้อนสตริงย่อย
ดังนั้นพวกเขาจึงป้อนสตริงย่อยอื่นๆ
จากนั้นเราพิมพ์สตริงแรกแล้วพิมพ์สตริงที่สอง
จากนั้นเราจะแปลงสตริงทั้งสองเป็นตัวพิมพ์ใหญ่
แล้วเราสามารถพูดได้ว่าสตริงที่สองพบสตริงแรก
ดังนั้นเมื่อเราเรียก strstr มันสามารถละเว้นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้
เพราะอย่าลืมว่า
ข้อจำกัดอย่างหนึ่งของ strstr คือต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
ตอนนี้เราจึงสามารถใช้ strstr กับข้อความและสตริงย่อยได้
เนื่องจากเป็นอักขระตัวพิมพ์ใหญ่ทั้งหมด
และอีกครั้ง นี่เป็นวิธีค้นหาว่าสตริงย่อยอยู่ในสตริงทั้งหมดโดยไม่สนใจตัวพิมพ์เล็กและตัวพิมพ์ใหญ่หรือไม่
อย่างแรก เราแค่แปลงทุกอย่างเป็นตัวพิมพ์ใหญ่ และตอนนี้เรากำลังเปรียบเทียบตัวพิมพ์ใหญ่
และนั่นคือสิ่งที่โปรแกรมนี้ทำ
มักเป็นกรณีที่คุณต้องการแปลงสตริงเป็นตัวเลข
มีฟังก์ชันเฉพาะที่ขึ้นต้นด้วย a
พวกมันเหมือน atof, atoi, atol และ atoll
Atoi เป็นเรื่องธรรมดามากในการแปลงสตริงเป็น int
ดังนั้น atof จะแปลงสตริง และมันก็เหมือนกับ
ASCII, ASCIItof มันจะแปลงสตริงเป็นชนิดข้อมูล
ดังนั้น atof คือ ASCII ของทุ่นหรือสองเท่าของทุ่น
และคุณอาจมีค่าส่งคืนบางอย่าง หากไม่พบหรือทำไม่ได้
ดังนั้นบางครั้งคุณจึงไม่สามารถแปลงสตริงเป็นจำนวนเต็มได้ โดยเฉพาะอย่างยิ่งถ้าคุณมีสตริงที่มีแต่คำ
โดยปกติ คุณจะใช้ฟังก์ชันนี้เมื่อคุณมีในตัวอย่าง
หากคุณมีสตริงอักขระที่มี 98 4 ที่สามารถแสดงเป็นสองเท่า
ดังนั้นคุณสามารถทำ atof กับมันได้ หากคุณมีสตริงอักขระของ Jason คุณจะไม่สามารถแปลงเป็นจำนวนเต็มลอยตัวได้
ดังนั้นจะไม่มีอะไรเกิดขึ้น ดังนั้นเมื่อคุณมีสตริงอักขระที่มีตัวเลข
คุณสามารถแปลงได้โดยใช้ฟังก์ชัน ASCIIto เหล่านี้
และทั้งหมดนี้รวมอยู่ในไฟล์ส่วนหัว lib มาตรฐาน
คุณจะเห็นสิ่งที่ตรงกันข้ามกับการสร้างจำนวนเต็มเป็นสตริง
คุณจะเห็นสิ่งต่างๆ เช่น itoa ซึ่งอยู่ใน ASCII
หากคุณมีตัวเลข 98 และต้องการแปลงเป็นสตริง ให้พูดว่า itoa
นอกจากนี้ยังมีฟังก์ชั่นที่ใหม่กว่า
สิ่งเหล่านี้มีไว้สำหรับสตริงเพื่อเพิ่มเป็นสองเท่าโดยเฉพาะเมื่อเทียบกับ
atof
คุณสามารถใช้ strtod
หรือ strtof หรือ stringtold ได้
และพวกเขาแต่ละคนก็แปลงเป็นทุ่นคู่ยาวหรือทุ่นคู่
แต่อย่างใดอย่างหนึ่งก็ดี ASCII เป็นของดั้งเดิม
ฉันคิดว่า strtods และ strtofs อื่น ๆ ถูกเพิ่มในมาตรฐานในภายหลังของ c
นี่คือตัวอย่างการทำ Conversion
มันง่ายมาก ที่นี่เรามีอาร์เรย์อักขระ
str 3 5 ช่องว่าง 2 5 ช่องว่าง 1 26.
เรามีตัวชี้สองสามตัว และเราจะผ่านจนกว่าเราจะกระโดดออกมาคือถ้าเราไม่สามารถแปลงมันได้
ดังนั้นเราจึงพูดว่า strtod เราส่งที่อยู่ของ ptr
ของเรา ตัวชี้ของเรา และเราส่งผ่านในสตริง p ซึ่งเป็นสตริงของเรา
3
5 2. 5.
ตอนนี้ คุณอาจพูดว่าทำไมคุณถึงผ่าน p str แทนที่จะแค่ str
และคุณไม่จำเป็นต้องทำ แต่ที่นี่เราต้องการตรวจสอบว่าไม่มีการแปลงจริงหรือไม่
เนื่องจากเรากำลังตรวจสอบว่าไม่มีการแปลง เราจึงต้องดูตัวชี้ทั้งสองตัว
คุณไม่สามารถเปรียบเทียบ ptr กับ str ได้ เนื่องจาก str เป็นอาร์เรย์
ดังนั้นเราจะใช้ pstr ชิ้นเพื่อแสดงอาร์เรย์อักขระของเราเพื่อเปรียบเทียบ
และถ้าเราเปรียบเทียบสองสิ่งนี้
แสดงว่า pstr ไม่ได้จัดเก็บการแปลง และเราเสร็จสิ้นแล้ว
เราไม่สามารถแปลงค่านั้นได้จริงๆ
มิฉะนั้น หากเราสามารถแปลงค่าได้ เราก็กำลังจะพิมพ์ออกมา
แล้วเราจะไปแปลงค่าครั้งต่อไป Pstar จะเท่ากับพอยน์เตอร์
ดังนั้นคุณสามารถเรียกใช้สิ่งนี้และคุณจะเห็นว่ามันจะจบลงด้วยการแปลงทุกอย่างในอาร์เรย์สตริงเป็นค่าเฉพาะเป็นสองเท่าหรือสองเท่า
ฉันมักจะใช้ atoi, atof แต่อย่างใดอย่างหนึ่งเหล่านี้จะใช้ได้
นี่คือฟังก์ชันการแปลง ขอขอบคุณ.