C++:
ค้นหาความยาวของสตริง
วิธีการ:
C++ มอบวิธีที่ตรงไปตรงมาในการค้นหาความยาวของสตริงโดยใช้เมธอด length() ของคลาส std::string แต่ถ้าคุณเป็นสายคลาสสิก คุณยังคงสามารถใช้สตริงแบบ C และ strlen() ต่อไปนี้คือตัวอย่างทั้งสองวิธี:
#include <iostream>
#include <string>
#include <cstring>
int main() {
// ใช้ std::string
std::string greeting = "Hello, World!";
std::cout << "ความยาวของสตริง (std::string): " << greeting.length() << std::endl;
// ใช้สตริงแบบ C
const char *c_greeting = "Hello, World!";
std::cout << "ความยาวของสตริง (สไตล์ C): " << strlen(c_greeting) << std::endl;
return 0;
}ตัวอย่างผลลัพธ์:
ความยาวของสตริง (std::string): 13
ความยาวของสตริง (สไตล์ C): 13การศึกษาเพิ่มเติม:
เดิมที C++ ได้รับอาร์เรย์อักขระแบบ C และฟังก์ชัน strlen() จาก C strlen() คำนวณความยาวโดยเดินผ่านอาร์เรย์จนกระทั่งไปถึงอักขระ null, '\0'. นี่เป็นกลยุทธ์ที่ง่ายแต่มีประสิทธิภาพ แต่ไม่สามารถเอาชนะประสิทธิภาพของ std::string.length() ซึ่งโดยทั่วไปจะเก็บความยาวไว้เพื่อการเรียกใช้ที่รวดเร็ว
มีทางเลือกอื่นไหม? แน่นอน:
- คุณยังสามารถใช้เมธอด
size(), ที่เหมือนกับlength()สำหรับstd::string - สำหรับสตริงอักขระแบบกว้าง,
std::wstringและเมธอดlength()ของมันจะเป็นตัวช่วย - ตัวเลือกที่น่าระทึกขวัญ ได้แก่ ฟังก์ชันที่กำหนดเองหรือการใช้อัลกอริทึ่มเช่น
std::distanceกับตัวนำไปใช้
แต่ควรระวัง, std::string::length() คืนค่าเป็นชนิด size_t, ซึ่งเป็นจำนวนเต็มที่ไม่มีเครื่องหมาย, ซึ่งอาจทำให้คุณประสบกับพฤติกรรมที่ไม่คาดคิดหากคุณผสมมันกับชนิดที่มีเครื่องหมายในนิพจน์
อ่านเพิ่มเติม:
- อ้างอิง C++ สำหรับ
std::string::length(): https://en.cppreference.com/w/cpp/string/basic_string/length - อ้างอิง C++ สำหรับ
strlen(): https://en.cppreference.com/w/cpp/string/byte/strlen - ข้อมูลเพิ่มเติมเกี่ยวกับ
std::stringกับสตริงแบบ C: https://www.learncpp.com/cpp-tutorial/4-4a-c-style-strings/ - สำหรับผู้ที่ต้องการศึกษาลึกลงไปในคลาส
std::string: https://en.cppreference.com/w/cpp/string/basic_string