Не работает функция toupper

210
15 марта 2018, 10:10

Программа компилируется но текст не переводит. Причём не работает что с подключенными библиотеками ctype что без них. tolower тоже не работает

void strToUpper(string &line)
{
for (int i = 0; i < line.length(); i++)
    if (islower(line[i]))
        toupper(line[i]);
}
void strToLower(string &line)
{
for (int i = 0; i < line.length(); i++)
    if (isupper(line[i]))
        tolower(line[i]);
}
void main()
{
int selecter;
string line;
cout << "Enter line:";
getline(cin, line);
cout << "Select (1-upper, 2-lower)\n";
cin >> selecter;
if (selecter == 1)
   strToUpper(line);
else if (selecter == 2)
    strToLower(line);
else
{
    cout << "ERROR!";
    return;
}
cout << line << "\n\n\n\n";
}
Answer 1

Конечно не переводит, ведь результат перевода вы игнорируете. Должно быть так:

line[i] = static_cast<char>(toupper(line[i]));
Answer 2

В tolower/toupper буква передается по значению, а не по ссылке.

Вызывайте как

c = toupper(c);

Кстати, вот еще вариант для строки...

READ ALSO
Easy Blockchain

Easy Blockchain

Всем приветПомогите найти ошибку

228
Error during artifact deployment. Spring Security

Error during artifact deployment. Spring Security

При старте приложения на сервере Tomcat происходит ошибка

190
Обновление страницы в java servlet (jsp)

Обновление страницы в java servlet (jsp)

Вопрос в следующем, есть java сервлет и скриплет (jsp) с javaScriptНа сервере происходит обновление в файловой системе, а на jsp это отображается отправляя...

263
Помощь с Задачей на Java. Нужно найти ошибку

Помощь с Задачей на Java. Нужно найти ошибку

На входе, в первой строке задано натуральное число N – количество жильцов (N ≤ 100)В последующих N строках располагается информация о всех жильцах:...

258