首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

stl中string.begin为什么不能转化为char *该如何处理

2012-03-18 
stl中string.begin为什么不能转化为char *?string str....char *p(char *)str.begin()这里报错[BCC32 E

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方便的多

热点排行