2013-11-18 3 views
0

У меня есть фрагмент кода что-то вроде этого:ISUPPER(), ISLOWER(), ToUpper(), ToLower() функции не работает в C++

char choice; 
do 
{ 
    cout << "A. Option 1" << endl; 
    cout << "B. Option 1" << endl; 
    cout << "C. Option 1" << endl; 
    cout << "D. Option 1" << endl; 
    cout << "Option: "; 
    cin >> choice; 
    if(islower(choice) == 0){ toupper(choice); } // for converting Lower alphabets to Upper alphabets so as to provide flexibility to the user 
}while((choice != 'A') && (choice != 'B') && (choice != 'C') && (choice != 'D')); 

но не преобразует Нижний алфавитов в верхний alphabets ... Я не знаю, почему ... Я использую ОС Windows 7, а Compiler - Visual C++ (обратите внимание, что я тестировал этот код в других компиляторах, но с той же проблемой) ...

+3

Try 'выбор = ToUpper (выбор),' –

+2

Кроме того, 'ISLOWER (выбор) == 0 'означает, что она преобразует только тогда, когда символ не в нижнем регистре (уже в верхнем регистре) ... – Sinkingpoint

+0

эй ребята, модифицированный код: 'if (islower (выбор)! = 0) {choice = toupper (выбор); } ' – radiantshaw

ответ

3

Вы должны использовать возвращаемое значение, toupper берет символ по значению (без ссылки) и возвращает результат в верхнем регистре:

choice = toupper(choice); 
^^^^^^^^ 

Кроме того, условие должно быть перевернутой:

if (islower(choice)) // not: if(islower(choice) == 0) 

 

Используйте этот код, toupper сам проверяет, является ли символ в нижнем регистре или нет:

cin >> choice; 
choice = toupper(choice); 
+2

Поскольку символ' char' может быть подписан и передан отрицательное значение (отличное от 'EOF', если это окажется отрицательным), это неопределенное поведение, код должен быть действительно' toupper (static_cast (выбор)) '. –

1

islower и isupper указывает, является ли символ верхним или нижним регистром или нет.

toupper или tolower не конвертируется. Он принимает параметр int и возвращает int, который преобразует символ.

Для преобразования использовать следующее:

choice = toupper(choice); 
2

Эта строка кода

if(islower(choice) == 0){ toupper(choice); } 

следует переписать, как показано ниже,

if(islower(choice)){ choice = toupper(choice); } 

Функция,

int toupper (int c); 

Возвращаемое значение В верхнем регистре, эквивалентном c, если такое значение существует или c (без изменений) в противном случае. Значение возвращается как значение int, которое может быть неявно выбрано для char.

toupper

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