【发布时间】:2013-06-22 03:43:00
【问题描述】:
为什么我需要取消引用迭代器?例如在下面的程序中
#include <iostream>
#include <string>
#include <vector>
int main()
{
using namespace std;
string s("some string");
for(auto it = s.begin(); it != s.end(); && !isspace(*it); ++it)
*it = isupper(*it);
cout<<s;
}
为什么必须使用isupper(*it); 而不仅仅是isupper(it);?
【问题讨论】:
-
请注意,您引用的代码没有意义,因为您将布尔值分配给循环内的字符。您可能想改用
toupper()。 -
是的。发布问题几秒钟后,我意识到这一点。哈哈!
-
你指的是dereferencing,而不是引用。
-
什么是大写迭代器?
-
@user2474562:解决问题而不是回复,因为这样可以避免一些可怜的混蛋浪费时间(你永远不知道复制粘贴了什么)。