关于C++迭代器的问题!!!

vector text ;
for (string line; getline(cin, line);) text.push_back(line);
for(auto i = text.begin(); i != text.end() && ! i->empty(); i++)
cout<<*i.size()<<endl; //报错
请问在上述代码的情况下,*i.size()为什么不存在呢, 解引用后*i应该就是个string类型,应该是有size()的,但为什么会报错了,百思不其解,望解答!

用 (*i).size() 或者 i->size()

这段代码非常多的错误,记得给我币,不懂得还可以继续问我。

1 vector声明一个对象出来不是这么搞得(vector text;) 正确写法 vectorstd::string text ;表示text容器是用来存字符串的。

2 for(auto i = text.begin(); i != text.end() && ! i->empty(); i++) 我懂你的意思把 i用来作为迭代器指针来表示检索容器里面存储东西的位置的,但是你这样定义是不对的
auto:只有局部自动变量和形式参数可以作为寄存器变量。
vector::iterator i=text.begin();需要这样定义才能得到你想要的循环遍历这个容器,然后输出容器里面存储的数据。
建议:百度 vector C++这几个关键词,进入各个微博,博客,csdn看看学习下vector,你就全部理解了