使用Iterator时访问成员字符串时出错:: empty

时间:2014-07-30 12:19:25

标签: c++ string iterator

我一直在阅读文本材料以磨练我的C ++技能,并且我的迭代器字符串实验遇到了麻烦。我想要做的是取一个字符串,遍历字符串中的每个元素,并输出字符串中的每个元素。但是,由于我正在学习如何使用箭头操作符,编译器告诉我无法访问成员字符串:: empty。变量aIter不具有类型string :: iterator吗?

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string sString("some string!");
    for(auto aIter = sString.cbegin();
        aIter != sString.cend() && !aIter->empty();
        aIter++)
        cout << *aIter << endl;

    cout << endl;

    return 0;
}

Error:
request for member 'empty' in '* aIter.__gnu_cxx::__normal_iterator<_Iterator,    _Container>::operator-><const char*, std::basic_string<char> >()', which is of non-class type 'const char'|

1 个答案:

答案 0 :(得分:1)

您正在迭代字符串的字符。角色没有会员功能,也没有“空”的概念。

您可能只想删除!aIter->empty()测试,迭代直到到达字符串的末尾。即使字符串为空,这也会起作用:cbegin()迭代器将等于cend()迭代器,因此循环将立即结束。

如果你想检查字符串是否为空(你不需要在这里做),那就是sString.empty()