读书人

stl中string.begin为什么不能转化为ch

发布时间: 2012-03-18 13:55:39 作者: rapoo

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

读书人网 >C++ Builder

热点推荐