correct transformations gcc 3.2
Terrence
terrence@emc.co.za
Tue Jul 8 09:02:00 GMT 2003
Hi
I've tried the following code on Redhat 8, gcc version 3.2. It compiles
correctly but crashes when I run it. I got this code from
http://linux-rep.fnal.gov/software/gcc/onlinedocs/libstdc++/22_locale/howto.html#7
Why does it crash?
Thanks in advance
Terrence
#include <iterator> // for back_inserter
#include <locale>
#include <string>
#include <algorithm>
#include <cctype> // old <ctype.h>
struct Toupper
{
Toupper (std::locale const& l) : loc(l) {;}
char operator() (char c) { return std::toupper(c,loc); }
private:
std::locale const& loc;
};
struct Tolower
{
Tolower (std::locale const& l) : loc(l) {;}
char operator() (char c) { return std::tolower(c,loc); }
private:
std::locale const& loc;
};
int main ()
{
std::string s ("Some Kind Of Initial Input Goes Here");
Toupper up ( std::locale("C") );
Tolower down ( std::locale("C") );
// Change everything into upper case
std::transform (s.begin(), s.end(), s.begin(),
up
);
// Change everything into lower case
std::transform (s.begin(), s.end(), s.begin(),
down
);
// Change everything back into upper case, but store the
// result in a different string
std::string capital_s;
std::transform (s.begin(), s.end(), std::back_inserter(capital_s),
up
);
}
More information about the Libstdc++
mailing list