การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่
ต่อ แบ่ง ค้นหา และแทนที่เนื้อหาข้อความด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- std::string เทียบกับอาร์เรย์อักขระแบบ C
- การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่
- สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์
- การแปลงข้อความ: to_string และ stoi