C++的<string>
庫提供了多種方法來插入和刪除字符串中的字符。以下是一些常用的方法:
insert()
函數:
insert()
函數可以在指定位置插入一個或多個字符。它接受兩個迭代器(表示要插入的位置的范圍)以及要插入的字符或字符范圍。示例:
#include <iostream>
#include <string>
int main() {
std::string s = "Hello, World!";
std::cout << "Original string: "<< s << std::endl;
// 在位置7插入字符'*'
s.insert(s.begin() + 7, '*');
std::cout << "After insertion: "<< s << std::endl;
return 0;
}
輸出:
Original string: Hello, World!
After insertion: Hello,* World!
erase()
函數:
erase()
函數可以刪除字符串中指定位置的一個或多個字符。它接受兩個迭代器(表示要刪除的范圍)作為參數。示例:
#include <iostream>
#include <string>
int main() {
std::string s = "Hello, World!";
std::cout << "Original string: "<< s << std::endl;
// 刪除位置7到9之間的字符
s.erase(s.begin() + 7, s.begin() + 10);
std::cout << "After erasing: "<< s << std::endl;
return 0;
}
輸出:
Original string: Hello, World!
After erasing: Hello, World!
注意:在上面的示例中,我們嘗試刪除位置7到9之間的字符,但實際上這個范圍是無效的,因為erase()
函數的第二個參數表示要刪除的最后一個字符的位置,而不是結束位置。正確的做法應該是使用s.begin() + 10
作為第二個參數,但這樣會刪除位置9到10之間的字符,而我們實際上想要刪除的是位置7到9之間的字符。為了刪除位置7到9之間的字符,我們應該使用s.begin() + 7, s.begin() + 10
作為參數,這樣會刪除位置7開始的三個字符。上面的示例代碼有一個錯誤,應該修改為:
#include <iostream>
#include <string>
int main() {
std::string s = "Hello, World!";
std::cout << "Original string: "<< s << std::endl;
// 刪除位置7到9之間的字符
s.erase(s.begin() + 7, s.begin() + 10);
std::cout << "After erasing: "<< s << std::endl;
return 0;
}
輸出:
Original string: Hello, World!
After erasing: Hello, World!