c++11 Find ve FindAll fonksiyonları

enum class Case { SENSITIVE, INSENSITIVE };

size_t Find(
const std::string &source,         //Source string to be searched
const std::string &search_string,  //The string to search for
Case searchCase = Case::INSENSITIVE,//Choose case sensitive/insensitive search
size_t offset = 0) {                //Start the search from this offset
//Implementation
auto searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);
return searching != std::string::npos ? searching : std::string::npos;
/*
return position of the first character
of the substring, else std::string::npos
*/
}

std::vector<size_t> FindAll(
const std::string &source,         //Source string to be searched
const std::string &search_string,  //The string to search for
Case searchCase = Case::INSENSITIVE,//Choose case sensitive/insensitive search
size_t offset = 0) {                //Start the search from this offset
//Implementation
auto searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);;

std::vector<size_t> positions;

while (searching < source.length() && (searching != std::string::npos)){
positions.emplace_back(searching);
offset= searching+1;
searching = searchCase == Case::INSENSITIVE ? std::ToLower(source).find(std::ToLower(search_string), offset) :
source.find(search_string, offset);
}

return positions;
//return searching != std::string::npos ? searching : std::string::npos;
/*
return position of the first character
of the substring, else std::string::npos
*/
}

Büyük ve küçük harfe dikkat ederek yada etmeyerek alt string araması. Ascii standardı için hazırladım. c++11 ile geçerli. Tepe tepe kullanın.

Yorumlar

Popüler Yayınlar