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