qq_39259295
2019-10-30 23:55
采纳率: 57.1%
浏览 344

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");
}

报错如下:


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

报错如下:

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qtchen_1988 2019-10-31 10:04
    已采纳

    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;
    

    图片说明

    点赞 评论

相关推荐 更多相似问题