2016-11-13 4 views
-4

Есть ли простой способ конвертировать выбор char из нижнего регистра q в верхний регистр Q?do while loop, где выбор использует toupper в C++

Я пробовал версию c версии toupper, но я не могу заставить ее работать на C++. Мне нужно, чтобы все введенные символы были в верхнем регистре; поэтому они ссылаются на выбор выбора по выбору в основном.

например, если они набирают c, он переключается на C, а функция, с которой связано C, может быть доступна или использована.

код до сих пор без каких-либо изменений:

include <iostream> 
#include <stdlib.h> 
#include <string> 
#include "link.h" 

using namespace std; 

int main() 
{ 
    link obr; 
    string n; 
    long int x; 
    char choice; 

    do{ 
    cout << "C: Create/Add\n P: Display\nQ: Quit"; 
    cin >> choice; 

     if(choice == 'C'){ 
       cout << "Name"; 
       cin >> n; 
       cin >> x; 
       obr.push(n,x); 
     } 

    if (choice == 'P'){ 
     obr.display(); 
    } 
} while(choice != 'Q'); 

    return 0; 
} 
+0

разместить свой код, теперь это слишком широк. Функции C можно вызывать из C++ –

+1

'std :: toupper' должен работать. Разве вы не забыли включить соответствующий заголовок? Вы можете создать [mcve] и спросить, почему код с 'std :: toupper' не компилируется :) <- Может быть лучше ответили, чем сейчас, так как лучшим ответом является' std :: toupper' :) – Rakete1111

+0

I подумал бы, что домашнее задание для преобразования строчных или прописных букв или наоборот, без использования стандартных библиотечных функций, будет частью любой вводной учебной программы для обучения C++. По крайней мере, это было в мои дни ... –

ответ

1

Просто напишите

#include <cctype> 

//... 

choice = std::toupper((unsigned char)choice); 

при условии, что переменная имеет тип choicechar.

Вы должны быть уверены, что выбор действительно содержит альфа-символ, а не символ управления.

1

Если вы можете убедиться, что ваш символьный набор совместим с C-х toupper(), то вы можете сделать это довольно тривиально:

std::string s = "this is a string"; 
std::transform(s.begin(), s.end(), s.begin(), ::toupper); 

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

  • Нет связанных вопросов^_^