我不知道为什么它在我的程序中不起作用。 tolower()
正常运行。现在我不知道toupper()
是如何工作的,我认为它的作用是tolower()
。
#include <iostream>
#include <cctype>
int main ()
{
using namespace std;
char ch;
while (ch != '@')
{
cin >> ch;
if (isdigit (ch))
cout << "";
else if (isgraph(ch) )
{
ch = tolower (ch);
cout << ch;
}
else
{
ch = toupper (ch);
cout << toupper (ch);
}
}
return 0;
}
答案 0 :(得分:1)
如果字符具有图形符号,则函数std::isgraph
返回true。然后,所有可见字符都将true
作为此函数的输出,因此所有字符都会tolower
。如果所有符号都显示为std::tolower
,那么您希望以大写字母显示哪些符号?
检查std::isgraph
here。
答案 1 :(得分:1)
如果你在程序中输入一个字符,天气是小写字母或大写字母,它将始终以第一个其他语句结束:
else if (isgraph(ch) )
{
ch = tolower (ch);
cout << ch;
}
因此,您必须首先检查您的输入是大写/小写。 例如,isupper和islower应该会有所帮助。
#include <iostream>
#include <cctype>
int main ()
{
using namespace std;
char ch;
while (ch != '@') {
cin >> ch;
if (isdigit (ch)) {
cout << "this was a digit" << endl;
}
else if (isgraph(ch) && isupper(ch)) {
ch = tolower (ch);
cout << ch << endl;
}
else if (isgraph(ch) && islower(ch))
{
ch = toupper (ch);
cout << ch << endl;
}
}
return 0;
}