В настоящее время я использую операторы switch с c ++, я работал над некоторыми примерами и использовал независимый пример для завершения. В качестве примера я выбрал конвертер валют из евро в фунт стерлингов. Во всех случаях мой код возвращался к значению по умолчанию, как будто был введен неправильный блок. Это происходило до тех пор, пока я не изменил свой ввод с символа «€» или «£» на «E» или «P». Я хотел бы знать, где я ошибся. пример моего кода ниже.
// Currency: Convert GBP to EUR or Vice Versa
int main(){
double gbp_to_eur = 1.09;
double eur_to_gbp = 0.92;
char unit = '£';
double amount_to_convert = 0;
int AnyKey = 0;
cout << "Please enter the the unit you'd like to convert \n";
cin >> unit;
cout << "\n \n Now please enter the amount you'd like to convert. \n";
cin >> amount_to_convert;
switch (unit) {
case 'P':
cout << "Your " << unit << amount_to_convert << " is worth €" << amount_to_convert * gbp_to_eur << '.\n';
break;
case 'E':
cout << "Your " << unit << amount_to_convert << " is worth €" << amount_to_convert * eur_to_gbp << '.\n';
break;
default: cout << "The compiler isn't programmed for this unit of currency. \n";
break;
}cin >> AnyKey;
}
£
является символом Unicode, и поэтому не вписывается в 8-бит char
, Ваш компилятор, надеюсь, дал предупреждение, как warning: multi-character character constant
для рассматриваемой строки.
Вы должны быть в состоянии исправить это с помощью:
#include <cwchar>
...
wchar_t x = u'£';
Других решений пока нет …