我在字符串的第一个字符上使用toupper转换时遇到麻烦。

我用tolower(first[0])将第一个字母变成小写。

toupper(first[0])为什么不将第一个字符大写?

另外,是否可以将字符串中的第一个字符移到最后一个位置?

非常感谢。

#include <iostream>
#include <string>
using namespace std;

int main ()
{

  char ans;

  do{

    string first, last;
    char first_letter, first_letter2;

    cout << "This program will convert your name "
     << "into pig latin.\n";
    cout << "Enter your first name: \n";
    cin >> first;
    cout << "Enter your last name: \n";
    cin >> last;

    cout << "Your full name in pig latin is ";

    for(int x = 0; x < first.length(); x++){
      first[x] = tolower(first[x]);
    }

    for(int x = 0; x < last.length(); x++){
      last[x] = tolower(last[x]);
    }

    first_letter = first[0];

    bool identify;

    switch (first_letter)
      {
      case 'a':
      case 'e':
      case 'i':
      case 'o':
      case 'u':
    identify = true;
    break;

      default:
    identify = false;
      }

    if(identify == true){
      toupper(first[0]);

      cout << first << "way" << " ";
    }

    first_letter2 = last[0];

    bool identify2;

    switch (first_letter2)
      {
      case 'a':
      case 'e':
      case 'i':
      case 'o':
      case 'u':
    identify2 = true;
    break;

      default:
    identify2 = false;
      }

    if(identify2 == true){
      toupper(first[0]);

      cout << last << "way" << endl;
    }

    cout << "You you like to try again? (Y/N)\n";
    cin >> ans;

  } while(ans == 'y' || ans == 'Y');

  return 0;

}

最佳答案

只是一个简单的错误,比较

first[x] = tolower(first[x]);




toupper(first[0]);


“看不到明显的东西缺失”综合症的常见情况...我讨厌那些错误。

至于将第一个字符移到末尾,我通常只用substr()作为一个简单的例子:

str = str.substr(1) + str[0];

10-07 23:32