簡體   English   中英

如何在向量字符串中搜索元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM