if s is of type string in C++,  s[n] will return a char, not unsigned char.  This creates lots of problem for me since I have to do type conversion everywhere. 
The following code will not print "yes".
#include <string>
#include <iostream>
using namespace std;
typedef unsigned long ulong;
typedef unsigned int uint;
typedef unsigned short uint16;
typedef unsigned char uchar;
int main(int argc, char *argv[]) {
    string s = "h\x8fllo world";
    printf("%d\n", s[1]);
    if (s[1] == 0x8f) {
        printf("yes\n");
    }
    return 0;
}
I can make it work by changing the above to be if ((uchar*)(s[1] == 0x8f) {, but there are too many occurrences.  I really hoped that the [] operator on string class could return a unsigned char!!  Is there a way to do this? 
 
     
     
    