I use this solution. I know you're not supposed to modify that data area.... but I think that's mostly for buffer overrun bugs and null character.... upper casing things isn't the same.
void to_upper(const std::string str) {
std::string::iterator it;
int i;
for ( i=0;i