[英]How would I search an element in a vector string?
我正在嘗試在向量字符串中搜索某些單詞。
例如,
vector<string> sentences = ["This is a test string","Welcome to C++!"];
string searchString = "This";
我試過了
if (std::find(sentences.begin(), sentences.end(), searchString) != sentences.end()) {
cout << "Found!";
}
else {
cout << "Not Found!";
}
現在這確實有效,但前提是 searchString 與元素逐字匹配。
例如,如果我們設置
string searchString = "This is a test string";
這將返回找到。
如何單獨搜索元素?
謝謝!
for(std::string& s : sentences)
{
if(s.find(searchString) != std::string::npos)
{
//substring found
}
else
{
//substring not found
}
}
這應該適用於在向量中的每個字符串中查找一個單詞
有std::find_if
可讓您傳遞要使用的謂詞,而不是直接將元素與 searchString 進行比較是否相等:
auto matcher = [searchString](const std::string& element) {
return element.find(searchString) != std::string::npos;
};
if (std::find_if(sentences.begin(), sentences.end(), matcher) != sentences.end()){
cout << "Found!";
} else {
cout<< "Not Found!";
}
您可以遍歷向量中的所有字符串,並一一檢查每個字符串是否包含您要查找的字符串。 如果字符串包含搜索詞,則可以返回整個元素:
#include <iostream>
#include <vector>
#include <string>
std::string findSubstr(const std::vector<std::string>& list, const std::string& search) {
for (const std::string& str : list) {
if (str.find(search) != std::string::npos) {
return str;
}
}
return "Not found";
}
int main(int argc, const char** argv) {
if (argc < 2) {
std::clog << "Usage: " << argv[0] << " <search term>\n";
return 1;
}
std::vector<std::string> test{"This is a test string", "Welcome to C++!"};
std::cout << findSubstr(test, argv[1]) << std::endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.