stl中string.begin为什么不能转化为char *?
string str;
....
char *p=(char *)str.begin();
这里报错
[BCC32 Error]E2034 Cannot convert '_String_iterator<char,char_traits<char>,allocator<char> >' to 'char *'
为什么呢?
[解决办法]
char *p = str.c_str();
[解决办法]
string是STL的中容器类
与VC的CString或BCB的UnicodeString是不同的
调用begin()返回的是容器中第一个元素的迭代器iterator
自然不能这么用
从理论上来讲begin返回的迭代器指向的内容地址应该就是第一个字符的地址
但是这个是C++类封装的特性之一
直接c_str()就能获取到char *了
如果没有特殊必要的话,BCB建议你用UnicodeString方便的多