Вот код, который я написал. Когда я ввожу строчный символ, такой как «а», он дает мне пустой символ, но после этого он работает хорошо. Можете ли вы сказать мне, что я сделал не так? Благодарю. 🙂
#include <iostream>
#include <string>
using namespace std;
int main()
{
char letter;
cout << "You will be asked to enter a character.";
cout << "\nIf it is a lowercase character, it will be converted to uppercase.";
cout << "\n\nEnter a character. Press . to stop: ";
cin >> letter;
if(islower(letter))
{
letter = isupper(letter);
cout << letter;
}
while(letter != '.')
{
cout << "\n\nEnter a character. Press . to stop: ";
cin >> letter;
if(islower(letter))
{
letter = toupper(letter);
cout << letter;
}
}
return 0;
}
Потому что вы печатаете bool
значение (т.е. false
ака, NUL
персонаж здесь) в первый раз.
Вы должны изменить
letter = isupper(letter);
в
letter = toupper(letter);
Смотри сюда:
if(islower(letter))
{
letter = isupper(letter);
cout << letter;
}
Если символ ниже, то вы присвоили ему возвращаемое значение isupper
, Это должно быть 0. Таким образом, вы печатаете нулевой символ.
Почему бы тебе просто не позвонить toupper
для каждого персонажа, который вы вводите? Если он ниже, он будет конвертировать его, если он уже выше, он ничего не будет делать.
Если вы хотите свой собственный алгоритм:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ch = '/0';
string input("Hello, How Are You ?");
for(size_t i=0; i<input.length(); i++)
{
if(input[i]>=97 && input[i]<=122)
{
ch=input[i]-32;
}
else
{
ch = input[i];
}
cout << ch;
}
return 0;
}