0

I wrote this code to change all lowercase letters in a string to uppercase. That works, but I also want it to go the other way around and nothing I tried is working.

#include<iostream> 
#include<string>
#include<cctype>

using namespace std;

string change();

int main()
{
    change();
    return 0;
}        

string change()
{
    cout << "Enter a string: ";
    string s;
    getline(cin,s);

    int i=0;

    while(i<s.length())
    {
        s.at(i)=toupper(s.at(i));
        i++;    
    }

    cout << s << endl;

    return s;
}
4
Contributors
7
Replies
8
Views
5 Years
Discussion Span
Last Post by triumphost
0

You could also use -

void TransformUppercase(std::string&  s)
{
    std::transform( s.begin(),
                    s.end(),
                    s.begin(),
                    ((int(*)(int))std::toupper));
    return;
}

Edited by nullptr

0

I learned about passing by reference, but I never learned about s.begin and s.end so I'm not sure I can use that.

0

Here I'm pretty sure you can use these.. I wrote them myself a while ago while writing an include for bitmap finding.. Usually we don't actually give out code but I can see that you tried and plus this code isn't complicated so I'm sure it's ok for me to share.

Also where it shows comments.. you can use those instead of the ToUpper.. but I just used ToUpper instead of using the Ascii table. Does uppercase, lowercase and capitalization. Enjoy. Note: If you uncomment the ascii table ones, you won't need any additional includes..

string UpperCase(string Str)
{
    /**
for (unsigned short I = 0; I < Str.size(); I++)
if(Str[I] >= 0x61 && Str[I] <= 0x7A)
Str[I] = Str[I] - 0x20;
**/
    //Str[I] -= 'a' - 'A' ;
    for (unsigned short I = 0; I < Str.length(); I++)
    {
        Str[I] = toupper(Str[I]);
    }
    return Str;
}

string LowerCase(string Str)
{
    /**
for (unsigned short I = 0; I < Str.size(); I++)
if(Str[I] >= 0x41 && Str[I] <= 0x5A)
Str[I] = Str[I] + 0x20;
**/
    //Str[I] += 'a' - 'A' ;
    for (unsigned short I = 0; I < Str.length(); I++)
    {
        Str[I] = tolower(Str[I]);
    }
    return Str;
}

string Capital(string Str)
{
    Str[0] = toupper(Str[0]);
    return Str;
}

Edited by triumphost

0

Welll you can of course edit it yourself.. Add a boolean parameter.. If true, Lowercase.. If false, Uppercase.. It's up to you to decide how your going to use it.. you can probably just copy the code inbetween it if you do not want a function..

Edited by triumphost

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.