@MrFlatman
Студент

Цикл для вывода только букв в верхнем регистре?

Стоит задача, водится строка, при выводе должно быть две строки, одна выводит символы только верхнего регистра, вторая только нижнего. Написал цикл для вывода на экран нижний регистр, подскажите, пожалуйста, как дальше расписать цикл чтобы он выводил и верхний регистр.

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cctype>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int str0=0;
    char str[100],str1, str2;
 
    cout << "Vvedite stroky: ";
    cin >> str;
    while (str[str0])
    {
        
        str1 = str[str0];
        str2=str[str0];
        if (islower(str1)) {
            cout << str1;
        }
                if (toupper(str2)) {
            cout << str2;
        }
        str0++;
    }
    system("pause");
    return 0;
}
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 1
nekipelov
@nekipelov
Можно так, если я правильно понял вопрос:

#include <iostream>
#include <cctype>
#include <string>
 
 
int main()
{
    const char *str = "TeSt";
    std::string lower;
    std::string upper;

    for(; *str; ++str)
    {
        char c = *str;
        if (tolower(c) == c)
            lower.push_back(c);
        else
            upper.push_back(c);
    }
    std::cout << lower << "\n" << upper << "\n";
    return 0;
}


Но это код не будет работать с UTF8 и другими многобайтовыми кодировками, для этого надо подключать например boost::locale.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы