从上到下,反之亦然,在c++中没有循环

upper to lower and vice-versa without loop in C++?

本文关键字:循环 c++ 反之亦然 从上到下      更新时间:2023-10-16

输入:

abcdE
输出:

ABCDe

我正在寻找一个高效和更少的代码解决方案为这个代码:

#include <iostream>   
#include <string>
using namespace std;
int main() {
    int len, ;
    string data;
    cin >> data;
    len = data.length();
    for (i = 0; i < len; i++)
        if (isupper(data[i]))
            data[i] = tolower(data[i]);
        else
            data[i] = toupper(data[i]);
    cout << data << endl;
    return 0;
}

我想你应该使用std::transform:

std::string str("abcdE");
std::transform(str.begin(), str.end(), str.begin(), [](char c) {
        return isupper(c) ? tolower(c) : toupper(c);
});

您也可以使用algorithm库中的std::for_each

#include <iostream>   
#include <string>
#include <algorithm>
int main() {
    std::string data = "AbcDEf";
    std::for_each(data.begin(), data.end(), [](char& x){std::islower(x) ? x = std::toupper(x) : x = std::tolower(x);});
    std::cout << data<< std::endl;
}