c++transform 的问题

c++transform 的问题,第1张

很奇怪,在VS2013上却没有编译错误,可能是GCC上toupper确实有2个或以上的重皮山雹载

声明一下toupper的形式就好了

#include <iostream>

#include <string>

#include <algorithm>

#include <stdlib.h>

using namespace std

int main() {

    std::string str

    int toupper(int) // 声明一下

 唯基   string str2

    int n, m, i

    cin >> n

    for (i = 0 i < n i++) {

        cin >> m >> str

  燃帆      str.erase(m - 1, 1)

        str2 = str

        std::transform(str.begin(), str.end(), str2.begin(), toupper)

        cout << str2 << endl

    }

}

tolower的谈迟int类型不能被transform直接仿侍判引用。

要改成

char myLower(char u){

return tolower(static_cast<int>(u))

}

就可备改以了

例如陪谨

std::string sl = "hello"

std::transform(sl.begin(), sl.end(), sl.begin(), toupper)

这样得到 sl 值是 大写的 HELLO

transform 是遍历一个容器里面元素 然后执行一个 *** 作

第1和2个参数是数据起始和结束位置(迭代器)

参数3是写入目标的起始位贺哗置

参数4是执行的禅乱行 *** 作(函数)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12131294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存