2016-04-21 2 views
0

Я написал короткую программу, которая вводит пользовательский ввод, а затем проверяет строку для соответствия входным данным пользователя, но мне нужно добавить еще одну функцию, которая проверяет, чтобы пользовательский ввод в строке и если она не вернет ошибку.Проверка строки в соответствии с переменной Char

Вот мой код для справки:

const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,’ "; 
int main() 
{ 
    char letter; //Variable holding user entered letter 
    cout << "Please enter letter in the aplhabet:" << endl; 
    cin >> letter; 
    cout << "The Position of " << letter << " in the string is: " << ALPHABET.find(letter) << endl; 

    return 0; 
} 

Я думаю, что я должен добавить, если/другое заявление, которое сначала проверяет, если входной сигнал является правильным, и если он выводится положение в строке и если не возвращение и ошибка.

+0

По определению, все, что вводит пользователь, будет строкой. Какие конкретные требования вы хотите наложить на содержимое строки? – OmnipotentEntity

+2

Прежде чем распечатать индекс, проверьте возвращаемое значение из 'ALPHABET.find' для значения' std :: string :: npos'. Это означает, что запись пользователя не была найдена в строке. –

+0

Если у вас уже есть представление о том, как это сделать, почему вы задаете вопрос, а не пытаетесь самостоятельно его попробовать? Это было бы быстрее. – Aracthor

ответ

2

Если вы хотите быть фантазией, вы можете написать свою собственную функцию. Однако string::find() в порядке. Все, что вам нужно проверить, является ли верный индекс действительным или нет.

// Example program 
#include <iostream> 
#include <string> 

using namespace std; 


const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,’ "; 
int main() 
{ 
    char letter; //Variable holding user entered letter 
    string::size_type index; //Index where char is found in string 
    cout << "Please enter letter in the aplhabet:" << endl; 
    cin >> letter; 

    index = ALPHABET.find(letter); 

    if (index == string::npos) 
     cout << "Error, letter not found" << endl; 
    else 
     cout << "The Position of " << letter << " in the string is: " << index << endl; 

    return 0; 
} 
+0

'std :: string :: find()' возвращает 'std :: string :: npos' (-1), если символ не найден. Вам нужно искать это значение специально, а не проверять 'index> length()' (что совершенно неверно), например: 'std :: string :: size_type index; ... if (index == std :: string :: npos) ... ' –

+0

Приветствия это сработало очарование – Johnapples

+0

std :: string :: npos - просто наибольшее возможное значение для элемента size_t. Мое решение выполняется в одно и то же время. Спасибо, что вы претенциозны. – jbrove

0

Утверждение if/else звучит хорошо. И если это не сработает, есть и другие способы, которыми он мог бы воспользоваться.

Смежные вопросы