在c ++中转换为大写和小写

时间:2013-02-10 21:13:14

标签: c++ visual-c++ c++11 c++builder

我用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

所以我该怎么修改呢

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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