c++ string庫(kù)函數(shù)插入和刪除字符的方法

c++
小樊
87
2024-09-24 22:24:06

C++的<string>庫(kù)提供了多種方法來(lái)插入和刪除字符串中的字符。以下是一些常用的方法:

  1. insert()函數(shù): insert()函數(shù)可以在指定位置插入一個(gè)或多個(gè)字符。它接受兩個(gè)迭代器(表示要插入的位置的范圍)以及要插入的字符或字符范圍。

示例:

#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!
  1. erase()函數(shù): erase()函數(shù)可以刪除字符串中指定位置的一個(gè)或多個(gè)字符。它接受兩個(gè)迭代器(表示要?jiǎng)h除的范圍)作為參數(shù)。

示例:

#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之間的字符,但實(shí)際上這個(gè)范圍是無(wú)效的,因?yàn)?code>erase()函數(shù)的第二個(gè)參數(shù)表示要?jiǎng)h除的最后一個(gè)字符的位置,而不是結(jié)束位置。正確的做法應(yīng)該是使用s.begin() + 10作為第二個(gè)參數(shù),但這樣會(huì)刪除位置9到10之間的字符,而我們實(shí)際上想要?jiǎng)h除的是位置7到9之間的字符。為了刪除位置7到9之間的字符,我們應(yīng)該使用s.begin() + 7, s.begin() + 10作為參數(shù),這樣會(huì)刪除位置7開(kāi)始的三個(gè)字符。上面的示例代碼有一個(gè)錯(cuò)誤,應(yīng)該修改為:

#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!

0