empty(); aIter++) cout,c++,string,iterator,C++,String,Iterator" /> empty(); aIter++) cout,c++,string,iterator,C++,String,Iterator" />

使用迭代器时访问成员字符串::empty时出错 我一直在阅读文本材料来锻炼我的C++技能,并且我的迭代器字符串实验遇到了麻烦。我要做的是获取一个字符串,遍历字符串中的每个元素,然后输出字符串中的每个元素。但是,由于我正在学习如何使用arrow操作符,编译器告诉我无法访问成员字符串::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'| #包括 #包括 使用名称空间std; int main() { 字符串sString(“一些字符串!”); for(auto aIter=sString.cbegin(); aIter!=sString.cend()&&!aIter->empty(); aIter++) cout

使用迭代器时访问成员字符串::empty时出错 我一直在阅读文本材料来锻炼我的C++技能,并且我的迭代器字符串实验遇到了麻烦。我要做的是获取一个字符串,遍历字符串中的每个元素,然后输出字符串中的每个元素。但是,由于我正在学习如何使用arrow操作符,编译器告诉我无法访问成员字符串::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'| #包括 #包括 使用名称空间std; int main() { 字符串sString(“一些字符串!”); for(auto aIter=sString.cbegin(); aIter!=sString.cend()&&!aIter->empty(); aIter++) cout,c++,string,iterator,C++,String,Iterator,您正在迭代字符串的字符。字符没有成员函数,也没有“空”的概念 您可能只想删除!aIter->empty()测试,以进行迭代,直到到达字符串的末尾。即使字符串为空,这也会起作用:cbegin()迭代器将等于cend()迭代器,因此循环将立即结束 如果您想检查字符串是否为空(您在这里不需要这样做),这将是sString.empty()迭代器“指向”字符,而不是字符串。这是非类类型的“const char”啊!当然!谢谢!我假设它是一个字符串,不会有问题。经验教训。

您正在迭代字符串的字符。字符没有成员函数,也没有“空”的概念

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


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

迭代器“指向”字符,而不是字符串。这是非类类型的“const char”啊!当然!谢谢!我假设它是一个字符串,不会有问题。经验教训。