Как проверить, что char не существует в строке - PullRequest
0 голосов
/ 20 октября 2018

Скажем, у нас есть пользователь, который вводит имя в виде строки "william", а затем пользователь вводит символ, для которого он хочет найти индекс.

 using namespace std;
 string name;
 char characterToFind;
 cout << "Enter a name ";
 cin >> name;
 cout << "Enter a character to find ";
 cin >> characterToFind;

Затем мы хотим найти индекссимвола в строковом массиве name.

for (int j = 0; j < name.length(); j++) {
    if (name[j] == characterToFind) {
        cout << "char is at index: " << j << endl;
    }
}

Как мне тогда проверить, существует ли введенный символ в строковом массиве name?Я пытаюсь сделать следующее:

if (characterToFind != name.find(characterToFind)) {
    cout<< "doesnt exist" << endl;
}

Оператор if всегда кажется верным и выполняет код, даже если введенный символ существовал в строковом массиве name.

1 Ответ

0 голосов
/ 20 октября 2018

Проблема с моим подходом заключалась в том, что я выполнял условие if, я проверял символ 's' против позиции индекса массива.

вместо этого, делая:

    if (name.find(characterToFind) == std::string::npos) {
       cout << "doesnt exist" << endl;
    }

это проверка, равен ли ввод символов позиции, которой не существует!Это правда, поэтому он сообщает пользователю, что введенный символ не существует.

...