在c++中可视地转换为大写和小写

visual converting to upper and lower case in c++

本文关键字:转换 c++ 可视      更新时间:2023-10-16

我用c++编写了这段代码

   #include <iostream>
   using namespace std;
    char convert1 (char x[])
    {
    for ( int i =0; i<5;i++)
    {
    if ( i/2 ==0 )
    x[i] =tolower(x[i]);
    else
    x[i] = toupper(x[i]);
    return x[i];
}
    }
   int main()
   {
      char z[] = "REDCA";
      cout<<convert1(z); 
      return 0;
   }

它会起作用,但它总是只打印第一个字母R的小写。但我想打印完整的单词rEdCa

那么我该如何修改它呢?

您想要的是if(i%2 == 0)而不是if(i/2 == 0)(可能是打字错误)。

此外,您只返回x[i],这是一个单独的char。更好的想法是使用std::string而不是char *,但也可以使用char *。(我不会提供完整的代码,正如我们在您之前的问题中所确定的那样,这是您的任务,您应该这样做,而不是我们。)

convert1的返回值为char。因此,cout << convert1(x)看到一个char,因此您只得到第一个r

你可能想要这样的东西:

template<size_t S>
char const* convert1(char (&x)[S])
{
    for(int i = 0; i < S; ++i)
    {
        if(i%2 ==0) {
            x[i] = tolower(x[i]);
        } else {
            x[i] = toupper(x[i]);
        }
    }
    return x;
}

想要更好,请使用std::string