Есть такая задача:
напишите диалоговую программу, которая в зависимости от выбранного
варианта использования выполняет действия пунктов 1, 2, 3 для любого
введенного с клавиатуры символа. 1 и 3 я сделал, 2 не получается, т.к в чар записывается что-то непонятное, как в него записать именно 1251?
Вот условия для 2:
2 – определение разницы значений кодов в Windows-1251 буквы в
прописном и строчном написании, если введен символ русского
алфавита
unsigned char uc = static_cast(inputChar);
if (uc >= 192 && uc <= 223) { // Прописная русская буква
char lowerChar = tolower(inputChar);
int difference = lowerChar - inputChar;
cout << "Разница между прописной и строчной буквой в Windows-1251: " << difference << endl;
}
else if (uc >= 224 && uc <= 255) { // Строчная русская буква
char upperChar = toupper(inputChar);
int difference = inputChar - upperChar;
cout << "Разница между строчной и прописной буквой в Windows-1251: " << difference << endl;
}
else {
cout << "Ошибка: введен не символ русского алфавита.\n";
}
break;
}
Т.е что просто с чар, что с беззнаковым все равно записывается что-то, что не попадает в диапазон значений.
Я могу подогнать под значения, что записываются, но ведь это уже будет не 1251
Demorozzz, Посмотрите таблицу CP1251, например тут: https://ru.wikipedia.org/wiki/Windows-1251
Разница между строчной и прописной русской буквой в этой кодировке всегда константа, кроме буквы ё. И так в большинстве кодировок.
Вам надо определится только со знаком константы. Если введена прописная буква, то константа положительная, если строчная - отрицательная.