c ++大写和小写的字符串

时间:2020-06-10 08:20:07

标签: c++

我想问一下如何在c ++中创建一个具有大写和小写字母的字符串?例如,当用户将“森林”一词放入时,我希望“森林”一词后面像是FOREST或FOreST和FORest。

2 个答案:

答案 0 :(得分:0)

可以通过以下方式随机地对字符串的字符进行大写和小写:

#include <random>
#include <cctype>
#include <algorithm>

std::string random_uppercase_lowercase(std::string s) {
    std::random_device rd;
    std::default_random_engine generator(rd());
    std::uniform_int_distribution<> distribution(0,1);

    std::transform(s.begin(), s.end(), s.begin(),
        [&](int ch) {
            if (distribution(generator)) {
              return std::toupper(ch);
            } else {
              return std::tolower(ch);
            }
    });
    return s;
}

答案 1 :(得分:0)

尝试将std::string转换为char并查看每个字母。如果是大写字母,则将其转换为小写字母,反之亦然。

简单的代码说明在这里:

#include <iostream>

int main(void) {
    std::string string;

    std::cout << "Enter a string: ";
    std::getline(std::cin, string);

    size_t len = string.length();
    char *pString = new char[len + 1]; // + 1 for null terminator

    strcpy(pString, string.c_str()); // copies 'string' into 'pString'

    for (int i = 0; i < len; i++) {
        if (isupper(pString[i]))
            pString[i] = tolower(pString[i]); // tolower() when isupper()
        else
            pString[i] = toupper(pString[i]); // toupper() when islower()
    }

    std::cout << pString << std::endl; // prints the converted string

    return 0;
}

示例输出如下:

Enter a string: HeLLO wOrlD
hEllo WoRLd