С другой стороны, Бьёрн Страуструп не упоминает о необходимости делать это в языке программирования C++. Он просто использует toupper, например
Код: Выделить всё
string name = "Niels Stroustrup";
void m3() {
string s = name.substr(6,10); // s = "Stroustr up"
name.replace(0,5,"nicholas"); // name becomes "nicholas Stroustrup"
name[0] = toupper(name[0]); // name becomes "Nicholas Stroustrup"
}
В ссылке говорится, что ввод должен быть представлен как беззнаковый символ.
Для меня это звучит так, как будто это справедливо для каждого символа, поскольку char и беззнаковый символ имеют одинаковый размер.
Так что это приведение ненужно или это было Страуструпом небрежно?
Изменить: в руководстве libstdc++ упоминается, что входной символ должен быть из базового исходного набора символов, но не выполняется приведение. Я думаю, это описано в ответе @Keith Thompson, все они имеют положительное представление как знаковый символ и беззнаковый символ?
Подробнее здесь: https://stackoverflow.com/questions/218 ... ower-et-al
Мобильная версия