1) 貌似写过如下代码 string s(xx); char * p = s.c_str(); for( ; *p; p++) { if(*p == xxxxx) break; } string的内存未必是连续分配啊 两种解决这个问题的方式 std::string result(s); size_t i; for (i = 0; i < result.length(); i++) { if(result[i]) .... } for (string::iterator i = result.begin(); i != result.end(); i++) { if(*i) .... }