为什么解引用字符串向量迭代器需要括号?

T.T*_*.T. 4 c++ oop iterator vector

vector<string> MyStrings;
vector<string>::iterator ItStr;
Run Code Online (Sandbox Code Playgroud)

我正在使用c_str()返回指向字符串的指针.

为什么需要用括号取消引用?

不编译: *ItStr.c_str();

错误C2039:'c_str':不是'std :: vector <_Ty> :: iterator'的成员

在迭代器周围编译/使用括号: (*ItStr).c_str();

如果你能指出我(没有双关语)正确的方向,我会很感激.谢谢!

Jam*_*lis 12

.优先级高于一元*.

*ItStr.c_str()好像你说的那样*(ItStr.c_str()).

当然,你可以使用ItStr->c_str(),因为(*x).y它等同于x->y(至少对于指针和迭代器;当然,你可以为你自己的类型重载操作符,使它们不一致,但是你这样做会很疯狂).


Cha*_*had 5

因为.运算符优先于*运算符.看到这个链接