字符串

时间:2016-08-03 05:48:55

标签: c++ string

我正在尝试将字符串字符从大写转换为小写。没有编译错误,但我仍然得到输出相同的输出:

#include <iostream>
#include<string.h>
#include<ctype.h>
using namespace std;
int main() {
    char a[100];
    cin>>a;
    for(int i =0;a[i];i++){
        if(islower(a[i])){
            toupper(a[i]);
        }
        else if(isupper(a[i])){
            tolower(a[i]);
        }
    }
    cout<<a;
    return 0;
}

3 个答案:

答案 0 :(得分:7)

std::toupperstd::tolower函数无法就地工作。他们返回结果,因此您必须再次将其分配给a[i]

char a[100];
std::cin>>a;
for(std::size_t i =0;a[i];i++){
    if(std::islower(a[i])){
        a[i]=std::toupper(a[i]);// Here!
    }
    else if(std::isupper(a[i])){
        a[i]=std::tolower(a[i]);// Here!
    }
}
std::cout<<a;

答案 1 :(得分:1)

您可以使用标准库中的transform函数和lambda函数,该函数返回给定字符的大写或小写字符。

#include <algorithm>
#include <iostream>

using namespace std;


int main
{
    string hello = "Hello World!";
    transform(hello.begin(), hello.end(), hello.begin(), [](char c){
            return toupper(c);})

    cout << hello << endl;
}

这将输出HELLO WORLD!。你可以想象为小写

做同样的事情

答案 2 :(得分:0)

这是我找到的解决方案,方法是调用另一个char变量“ charConvert”并将其设置为等于转换后的字符。

#include <iostream>
#include<string.h>
#include<ctype.h>
using namespace std;

int main() {
    char a[100];
    cin >> a;
    char charConvert;

   for (int i = 0; a[i] ; i++) {

        if  (isupper(a[i])) { 
            charConvert = tolower(a[i]);
        }
        else if (islower(a[i])) {
            charConvert = toupper(a[i]);
        }
    }
    cout << charConvert << endl;

    return 0;
}