很奇怪,在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是执行的禅乱行 *** 作(函数)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)