我在字符串的第一个字符上使用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];