Я пытаюсь перебрать каждый символ в std :: string, который был передан по ссылке, и сравнить его с первым элементом вектора строк.
#include <iostream>
#include <vector>
bool letterFound (const std::string &s){
std::vector<std::string> vLetters = {"A", "B", "C"};
for (auto &letter : s) {
if (&letter == vLetters[0]) {
return true;
}
}
return false;
}
int main() {
std::string result = letterFound("AB")
? "Letter [A] found"
: "Letter not found";
std::cout << result << std::endl;
return 0;
}
Если в функцию была передана только одна буква «A», то буква была найдена, но если я передал более одной буквы, например «AB», то фактическое значение первого сравниваемого символа равно «65 'A' ", а не" А ". Второй символ "66 'B'".
Как получить ровно одну букву из строки для сравнения без этих чисел?
Обновление: Письмо будет найдено, если
std::vector<std::string> vLetters = {"A", "B", "C"};
изменить на
std::vector<char> vLetters = {'A', 'B', 'C'};
Однако было бы неплохо узнать, как изменить код без изменения вектора строк.