string — C ++: Как преобразовать строчные буквы в upercase и наоборот с помощью функций ctype?

int main(){
char text[500];
int j,h,op;
char b[]=" abcdefghijklmnopqrstuvwxyz";
char a[]=" ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout<<"insert text:";fflush(stdin);gets(texto);
system("cls");
cout<<"1-Minus to Mayus"<<endl;
cout<<"2-Mayus to Minus"<<endl;
cin>>op;
system("cls");
if (op==1)
{
j=0;
h=0;
while(j<28){

if(text[h]==b[j]){
text[h]=a[j];
h++;
j=0;
}
j++;
}
cout<<text<<endl;
system("pause");
}
else if (op==2)
{
j=0;
h=0;
while(j<28){

if(text[h]==a[j]){
text[h]=b[j];
h++;
j=0;
}
j++;
}
cout<<text<<endl;
system("pause");
}
}

Этот код работает только с одним миром (до первого пробела), я хочу, чтобы он выполнялся с целым предложением или даже с абзацем. Я надеюсь, что вы могли бы понять логику функции от нижнего к верхнему в main ()

-2

Решение

Если это не тот случай, когда вы не хотите, чтобы этот код зависел от значений таблицы ASCII (хотя это может значительно облегчить вашу жизнь), следуя духу вашего интересного кода, можно использовать функцию для преобразования букв в нижний регистр. реализован как таковой:

const char LOWERCASES[] = " abcdefghijklmnopqrstuvwxyz";
const char CAPITALS[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ";

void toLowerCase(string &s) {
for (unsigned int i = 0; i < s.size(); ++i) {
for (unsigned int l = 0; l < 27; ++i) {
if (s[i] == CAPITALS[l]) {
s[i] = LOWERCASES[i];
break;
}
}
}
}
2

Другие решения

Попробуй это

int main(){

int ss,T;

char text[100];

cout<<"Insert text ";gets(text);
T=tam(texto);
cout<<"1)Menu "<<endl;
cout<<"2)Upercase "<<endl;
cout<<"3)LowerCase "<<endl;
cout<<"4)Random"<<endl;cin>>ss;

switch(ss){

case 2:
for(int i=0 ; i<T ; i++){
if(text[i]>=97 && text[i]<=122)
text[i]=int(text[i])-32;
}
cout<<text<<endl;

break;

case 3:
for(int i=0 ; i<T ; i++){
if(text[i]>=65 && text[i]<=90)
text[i]=int(text[i])+32;
}
cout<<text<<endl;

break;case 4:
for(int i=0 ; i<T ; i++){
if(text[i]>=97 && text[i]<=122)
text[i]=int(text[i])-32;
else
text[i]=int(text[i])+32;
}

cout<<text<<endl;

break;
}

}

0