C++ 中大小写字母的转化

在C++中,大小写字母之间的转换可以通过几种方法实现。以下是常见的几种方式:

1. 利用ASCII码差值

由于所有小写字母的ASCII码比对应的大写字母小32,可以简单地通过加减32来进行转换:

#include 
using namespace std;

int main() {
    char lower = 'a';
    char upper = 'A';

    // 小写转大写
    upper = lower - 32;
    // 大写转小写
    lower = upper + 32;

    cout << "小写转大写: " << lower << endl;
    cout << "大写转小写: " << upper << endl;

    return 0;
}

2. 使用C++标准库函数(

#include  // C++ 版本
// 或者
#include  // C 版本兼容

int main() {
    char c = 'a';

    // 使用 toupper 函数将字符转为大写
    char upper_c = toupper(c);
    
    // 使用 tolower 函数将字符转为小写
    char lower_c = tolower('A');

    cout << "小写转大写: " << upper_c << endl;
    cout << "大写转小写: " << lower_c << endl;

    return 0;
}

3. 使用 std::transform 和 std::locale(对于非ASCII字符集可能更可靠)

#include 
#include 

int main() {
    string str = "Hello World!";
    std::locale loc;

    // 转换为全大写
    std::transform(str.begin(), str.end(), str.begin(), ::toupper); // C++98/03
    // C++11 及以后使用 locale 来确保正确处理多字节字符集
    // std::transform(str.begin(), str.end(), str.begin(), 
    //                 [&](char c){return std::toupper(c, loc);});

    // 转换为全小写
    std::transform(str.begin(), str.end(), str.begin(), ::tolower); // C++98/03
    // C++11 及以后版本
    // std::transform(str.begin(), str.end(), str.begin(), 
    //                 [&](char c){return std::tolower(c, loc);});

    cout << "全大写: " << str << endl;

    // 新字符串用于小写输出
    string str_lower = str;
    std::transform(str_lower.begin(), str_lower.end(), str_lower.begin(), ::tolower);
    cout << "全小写: " << str_lower << endl;

    return 0;
}

请注意,直接操作ASCII码的方法只适用于ASCII字符集中的英文字母,而使用标准库函数和std::transform结合std::locale则可以支持更广泛的字符集,包括Unicode等。

4.可以使用toupper()函数将小写字母转换为大写字母,使用tolower()函数将大写字母转换为小写字母

这两个函数都是在头文件中定义的。以下是一个示例代码:

#include 
#include 

int main() {
    char letter = 'a';  // 假设要转换的字母

    // 将小写字母转换为大写字母
    if (islower(letter)) {
        letter = toupper(letter);
        std::cout << "小写字母 " << letter << " 转换为大写字母后为: " << letter << std::endl;
    }

    // 将大写字母转换为小写字母
    if (isupper(letter)) {
        letter = tolower(letter);
        std::cout << "大写字母 " << letter << " 转换为小写字母后为: " << letter << std::endl;
    }

    return 0;
}

 

 

你可能感兴趣的:(C++,c++)