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