Hello all,

For learning purposes, I've built a vector of strings and tried to access each element on each string performing an uppercase conversion on all characters. I wanted also to use iterators. I produced the following code:
Code:
string strtemp;
for (vector<string>::const_iterator i_iter(vstr.begin()); i_iter != vstr.end(); ++i_iter) {
    strtemp = *i_iter;
    for (string::iterator str_iter(strtemp.begin()); str_iter != strtemp.end(); ++str_iter) {
        *str_iter = toupper(*str_iter); //Warning reports this line
    }
}
The code works but...

1. I get on VC++ 2005 Express a warning about possile loss of data from a conversion from int to char. I read of the help file concerning this warning code (C4244). I think it is a level 3 warning that warns about a __int64 conversion to unsigned int. Question is why?

Under Dev-C++, this code produces no warning even with -Wall and -Wextra. So my best guess before I decided to bother you good people, is that this has something to do with Microsoft's support for sized intergers. Namely this __int64 type. Is this so? Are iterators being declared as __int64 under VC++ 2005?

2. I couldn't find a way to access each string directly after the 2nd FOR loop. Hence having to create the temporary string. My best shoot for the second loop was:
Code:
for (string::iterator str_iter = *i_iter.begin(); str_iter != *i_iter.end(); ++str_iter)
Which produced an compile-time error. How can I directly access the strings inside the vector using iterators?