在 C++ 中,std::string::find()
是一個用於在字串中查詢子字串或字元的成員函式。查詢成功時返回匹配的索引位置,查詢失敗時返回 std::string::npos
,表示未找到。
std::string::find()
函式原型
std::size_t find(const std::string& str, std::size_t pos = 0) const noexcept;
std::size_t find(const char* s, std::size_t pos = 0) const;
std::size_t find(char c, std::size_t pos = 0) const noexcept;
引數說明
str
/s
:要查詢的子字串或字元。pos
(可選):從哪個位置開始查詢,預設為0
,即從字串的開始位置查詢。- 返回值:查詢成功時返回第一個匹配字元的索引,查詢失敗時返回
std::string::npos
。
std::string::npos
std::string::npos
是一個常量,表示查詢操作失敗或子字串不存在時的返回值。具體定義為 std::string::npos = -1
,它實際上是一個 std::size_t
型別的最大值。
示例
以下是一些簡單的示例,演示如何使用 std::string::find()
和 std::string::npos
:
查詢子字串
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
// 查詢子字串 "World"
std::size_t found = str.find("World");
if (found != std::string::npos) {
std::cout << "Found 'World' at index: " << found << std::endl; // 輸出: Found 'World' at index: 7
} else {
std::cout << "'World' not found." << std::endl;
}
// 查詢不存在的子字串 "Earth"
found = str.find("Earth");
if (found == std::string::npos) {
std::cout << "'Earth' not found." << std::endl; // 輸出: 'Earth' not found.
}
return 0;
}
查詢字元
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
// 查詢字元 'o'
std::size_t found = str.find('o');
if (found != std::string::npos) {
std::cout << "Found 'o' at index: " << found << std::endl; // 輸出: Found 'o' at index: 4
}
return 0;
}
從指定位置開始查詢
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
// 從索引 5 開始查詢字元 'o'
std::size_t found = str.find('o', 5);
if (found != std::string::npos) {
std::cout << "Found 'o' at index: " << found << std::endl; // 輸出: Found 'o' at index: 8
}
return 0;
}
總結
std::string::find()
:用於查詢字串或字元。返回子字串第一次出現的索引,或者返回std::string::npos
表示未找到。std::string::npos
:表示查詢操作失敗時的返回值(通常為最大值-1
表示無效位置)。