C++ String::substr() 函式



C++ 的std::string::substr()函式用於從給定的字串物件獲取子字串。它接受兩個引數:子字串的起始位置和子字串的長度。此函式返回一個新的字串物件,其中包含原始字串的指定部分。

如果長度引數放置錯誤,則預設為從起始位置提取到字串末尾的子字串。

語法

以下是 std::string::substr() 函式的語法。

string substr (size_t pos = 0, size_t len = npos) const;

引數

  • pos - 指示要複製的第一個字元的位置。
  • len - 指示子字串中包含的字元數。

返回值

此函式返回一個字串物件。

示例 1

以下是使用 C++ 中的 std::substr() 函式建立從索引 0 開始並以索引 10 結束的子字串的基本程式。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = " Tutorialspoint ";
   string sub = str.substr(0, 10);
   cout << sub << endl;
   return 0;
} 

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Tutorials

示例 2

在此示例中,substr 僅使用起始位置呼叫,因此它會從該位置建立到字串末尾的子字串。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = " Tutorialspoint ";
   string sub = str.substr(10);
   cout << sub << endl;
   return 0;
}

輸出

如果我們執行上述程式碼,它將生成以下輸出。

point

示例 3

以下是另一個建立子字串位置大於字串長度導致 out_of_range 異常的示例。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = " Tutorialspoint ";
   try {
      string sub = str.substr(50);
   } catch (const std::out_of_range & e) {
      cout << "Exception: " << e.what() << endl;
   }
   return 0;
}

輸出

以下是上述程式碼的輸出。

Exception: basic_string::substr: __pos (which is 50) > this->size() (which is 16)                  

示例 4

在此示例中,我們使用等於字串長度的起始位置呼叫子字串,它返回一個空字串。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = "Tutorialspoint";
   string sub = str.substr(str.length());
   cout << "Empty string = '" << sub << "'" << endl;
   return 0;
} 

輸出

以下是上述程式碼的輸出。

Empty string = ''  
string.htm
廣告