[nfbcs] C++ question
Joseph C. Lininger
devnull-nfbcs at pcdesk.net
Mon Nov 12 04:03:54 UTC 2018
I originally didn't copy the list, but I decided this might be useful
for everyone. So, here's my response to this message.
What you'll want depends on whether or not you're using the older style
C strings or the newer C++ style string objects. I'm assuming, because
you said C++, that it's string objects you're using. In that case, first
make sure you have #included the string header, like this:
#include <string>
You would have had to do that anyway to make the string object
available, but figured I'd mention it anyway. While you're at the top of
your file, also make sure you have this line. You'll need it for the
transformation I'm going to show you.
#include <algorithm>
Finally, make sure you have:
using namespace std;
Now, for the case conversion. This problem is, unfortunately, harder
than it should be. You have two choices.
1. Apply a transformation to the String, whereby you use the transform()
function in conjunction with the old C toupper() function to convert
each character to uppercase. (You have to use the old C toupper, not the
one from C++, which I'll show you how to do.)
2. Convert the C++ string to a traditional C null-terminated string
(char * if you're a C guy), then use strupper to convert that to upper
case. Be careful with memory locations and such if you elect to do this.
I'll show how to do it using option 1 since that doesn't require you
ever convert the String object to something else. Assuming you have a
string called theString, you would write a line like this to convert it
to uppercase using transform().
transform(theString.begin(), theString.end(), theString.begin(),
::toupper);
Here's a sample program that reads a string, then converts to uppercase
and displays it. I actually compiled and ran this, so I know it works at
least on my setup.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string theString;
cout << "Enter a string: ";
cin >> theString;
// The magic is the next line
transform(theString.begin(), theString.end(), theString.begin(),
::toupper);
cout << "The string is: " << theString << "\n";
}
Hope this helps.
Joe
On 11/11/2018 20:19, gwunder--- via nfbcs wrote:
> My grandson has asked for his grandfather's help, and although I have not
> coded in C++, so far I've been able to help. We are stumped by the need to
> convert a string to one case. It matters not at all to us if that is upper
> or lower case. We need to see if a string read forward or backward is the
> same-a palindrome. Though we find a function called toupper, we do not find
> the library in which it resides. It appears not to work on more than one
> character at a time.
>
>
>
> So if any of you can write me off list, how do we convert a string to one
> case?
>
>
>
> Thank you.
>
>
>
>
>
> _______________________________________________
> nfbcs mailing list
> nfbcs at nfbnet.org
> http://nfbnet.org/mailman/listinfo/nfbcs_nfbnet.org
> To unsubscribe, change your list options or get your account info for nfbcs:
> http://nfbnet.org/mailman/options/nfbcs_nfbnet.org/devnull-nfbcs%40pcdesk.net
More information about the NFBCS
mailing list