0Pricing
C++ Academy · บทเรียน

การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่

ต่อ แบ่ง ค้นหา และแทนที่เนื้อหาข้อความด้วย API ของ std::string

การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่ เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

การต่อสตริงด้วย +

ตัวดำเนินการ + จะนำสตริงสองตัวมาต่อกันเป็นสตริงใหม่ ส่วน += จะต่อท้ายในสตริงเดิม

std::string a = "Hello, ";
std::string b = "World";
std::string c = a + b;     // "Hello, World"
a += b;                    // a is now "Hello, World"

การต่อท้ายอย่างมีประสิทธิภาพ

การใช้ + ซ้ำ ๆ กับสตริงยาวจะสร้างอ็อบเจ็กต์ชั่วคราวจำนวนมาก ใช้ += หรือ append() ในลูปที่ทำงานบ่อย

std::string result;
for (auto& word : words) {
    result += word;
    result += ' ';
}

สตริงย่อยด้วย substr

substr(pos, len) ส่งคืนสตริงใหม่ที่เริ่มต้นจาก pos โดย len จะมีค่าเริ่มต้นเป็นส่วนที่เหลือของสตริง

std::string s = "Hello, World";
std::cout << s.substr(0, 5);   // "Hello"
std::cout << s.substr(7);      // "World"

ค้นหาสตริงย่อยด้วย find

find(needle) ส่งคืนดัชนีของรายการที่ตรงกันรายการแรก หรือ std::string::npos หากไม่พบ

std::string s = "the quick brown fox";
auto pos = s.find("quick");
if (pos != std::string::npos)
    std::cout << "Found at " << pos;

ค้นหาจากตำแหน่งที่กำหนด

ส่งอาร์กิวเมนต์ตัวที่สองเพื่อเริ่มค้นหาจากดัชนีที่กำหนด ซึ่งมีประโยชน์สำหรับการค้นหาการปรากฏทั้งหมด

std::string s = "abc abc abc";
size_t pos = 0;
while ((pos = s.find("abc", pos)) != std::string::npos) {
    std::cout << pos << ' ';
    pos += 3;
}

rfind: ค้นหาจากท้ายสตริง

rfind ค้นหาการปรากฏ ครั้งสุดท้าย ส่วน find_first_of และ find_last_of ใช้ค้นหาอักขระใด ๆ จากชุดอักขระที่กำหนด

แทนที่ภายในสตริงเดิม

replace(pos, len, str) แทนที่อักขระจำนวน len ตัวที่ตำแหน่ง pos ด้วย str โดยสตริงใหม่อาจมีความยาวต่างจากเดิม

std::string s = "Hello, World";
s.replace(7, 5, "C++");
std::cout << s;  // "Hello, C++"

ลบอักขระ

erase(pos, len) ลบสตริงย่อย การเรียก erase() โดยไม่มีอาร์กิวเมนต์จะล้างสตริงทั้งหมด

std::string s = "Hello, World";
s.erase(5, 2);          // removes ", "
std::cout << s;         // "HelloWorld"

แทรกอักขระ

insert(pos, str) แทรก str ที่ตำแหน่ง pos และเลื่อนข้อมูลส่วนที่เหลือไปทางขวา

std::string s = "HelloWorld";
s.insert(5, ", ");
std::cout << s;  // "Hello, World"

เปรียบเทียบสตริง

ใช้ตัวดำเนินการเปรียบเทียบมาตรฐานหรือ compare() โดยการเปรียบเทียบจะเป็นไปตามลำดับพจนานุกรม

std::string a = "apple", b = "banana";
if (a < b) std::cout << "apple comes first";

แทนที่การปรากฏทั้งหมด

ไลบรารีมาตรฐานไม่มีคำสั่งเดียวสำหรับแทนที่ทั้งหมด คุณต้องเขียนฟังก์ชันช่วยอย่างง่ายหรือใช้ std::regex

void replaceAll(std::string& s, const std::string& from, const std::string& to) {
    size_t pos = 0;
    while ((pos = s.find(from, pos)) != std::string::npos) {
        s.replace(pos, from.size(), to);
        pos += to.size();
    }
}

ตรวจสอบอย่างรวดเร็ว

"hello".find("xyz") จะส่งคืนค่าใดเมื่อไม่พบสตริงย่อย

ทบทวน

std::string มีชุดคำสั่งที่ครบถ้วน ได้แก่ + และ += สำหรับเชื่อมสตริง, substr สำหรับตัดแบ่ง, find สำหรับค้นหา และ replace, erase, insert สำหรับแก้ไข หลังใช้ find ให้เปรียบเทียบผลลัพธ์กับ std::string::npos

คำถามที่พบบ่อย

บทเรียน “การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่”

ต่อ แบ่ง ค้นหา และแทนที่เนื้อหาข้อความด้วย API ของ std::string คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. std::string เทียบกับอาร์เรย์อักขระแบบ C
  2. การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่
  3. สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์
  4. การแปลงข้อความ: to_string และ stoi
← กลับไปที่ C++ Academy