双端队列有关问题

双端队列问题
#include <deque>
#include <iostream>
using namespace std;
void print (deque<string>& ds) {
cout << "双端队列大小:" << ds.size () << endl;
typedef deque<string>::const_iterator CI;
for (CI it = ds.begin(); it != ds.end(); it++)
cout << '<' << *it << '(' << (int)it->c_str()[0] << ')' << '>';
cout << endl;
}
int main (void) {
deque<string> ds;
ds.push_back ("狗");
ds.push_back ("大象");
ds.push_back ("老虎");
print (ds);
ds.pop_front ();
print (ds);
ds.pop_back ();
print (ds);
ds.push_front ("老鹰");
ds.push_front ("猴子");
print (ds);
ds.erase (find (ds.begin(),ds.end(),"大象"));
print (ds);
ds.insert (ds.begin () + 1, "狮子");
print (ds);
ds.resize (5);
print (ds);
ds[3] = "鳄鱼";
ds[4] = "老鼠";
print (ds);
sort (ds.begin (), ds.end ());
print (ds);
return 0;
}



  在上面的循环打印函数红色标注中,(int)it->c_str()[0] ,这个代表是什么意思? 没有看到C_str()[0]的定义,本人是新手,麻烦指点,不胜感激。

------解决方案--------------------
(int)it->c_str()[0] 

it->c_str() 
这个是string类型的c_str() 就是从string变量中导出char *
[0]这个下标,结合char * 得到一个char变量, (int)就不用说了,强制转换。