C++中的std::string
類提供了多種方法來獲取子字符串。以下是一些常用的子串操作:
substr(size_t pos = 0, size_t len = npos) const
: 從給定位置pos
開始,返回一個長度為len
的子字符串。如果未指定len
,則返回從pos
開始直到字符串末尾的所有字符。示例:
#include<iostream>
#include<string>
int main() {
std::string str = "Hello, World!";
std::string sub = str.substr(7, 5); // 從位置7開始,截取5個字符
std::cout<< sub<< std::endl; // 輸出 "World"
return 0;
}
operator[] (size_t pos)
: 通過索引訪問字符串中的單個字符。這個操作符可以用于獲取子字符串的特定字符,但不能直接用于獲取子字符串。示例:
#include<iostream>
#include<string>
int main() {
std::string str = "Hello, World!";
char ch = str[7]; // 獲取位置7的字符
std::cout << ch << std::endl; // 輸出 'W'
return 0;
}
std::string
構造函數創建子字符串:示例:
#include<iostream>
#include<string>
int main() {
std::string str = "Hello, World!";
std::string::iterator it_begin = str.begin() + 7;
std::string::iterator it_end = it_begin + 5;
std::string sub(it_begin, it_end); // 從位置7開始,截取5個字符
std::cout<< sub<< std::endl; // 輸出 "World"
return 0;
}
std::string_view
(C++17及更高版本):示例:
#include<iostream>
#include<string>
#include<string_view>
int main() {
std::string str = "Hello, World!";
std::string_view sub(str.data() + 7, 5); // 從位置7開始,截取5個字符
std::cout<< sub<< std::endl; // 輸出 "World"
return 0;
}
注意:在處理子字符串時,請確保不要越界,以避免未定義行為。