c++ toupper函数和迭代器的报错

题目:输出一个文本的第一段并编程大写
代码如下:

题目:输出一个文本的第一段并编程大写
代码如下:
#include<iostream>
#include<string>
#include<vector>
#include<cctype>//toupper和tolower函数的头文件
using namespace::std;

int main()
{
vector<string>text;
string word;
while (cin >> word)
{
text.push_back(word);
}
for (auto it = text.begin(); it != text.end() && !it->empty(); ++it)
{
*it=toupper( *it);
cout << *it << endl;
}
system("PAUSE");
}

报错如下:


请问这是为什么呢?感觉和书上例子写的一样啊。。。 

报错如下:

请问这是为什么呢?感觉和书上例子写的一样啊。。。

toupper 原型是: int toupper ( int c );

*it=toupper( *it);
cout << *it << endl;
改成:
string tmp = *it;
for (int i = 0; i < tmp.length(); i++)
{
     tmp[i] = toupper(tmp[i]);
}
    cout << tmp << endl;

图片说明