我有这样的代码片段:
char choice;
do
{
cout << "A. Option 1" << endl;
cout << "B. Option 1" << endl;
cout << "C. Option 1" << endl;
cout << "D. Option 1" << endl;
cout << "Option: ";
cin >> choice;
if(islower(choice) == 0){ toupper(choice); } // for converting Lower alphabets to Upper alphabets so as to provide flexibility to the user
}while((choice != 'A') && (choice != 'B') && (choice != 'C') && (choice != 'D'));
但是它不会将低位字母转换为高位字母...我不知道为什么...我使用的操作系统是Windows 7,而编译器是Visual C ++(请注意,我已经在其他编译器中测试了此代码,但同样的问题)...
最佳答案
您应该使用返回的值,toupper
按值(而不是引用)接受一个字符并返回大写结果:
choice = toupper(choice);
^^^^^^^^
另外,条件应取反:
if (islower(choice)) // not: if(islower(choice) == 0)
使用此代码,
toupper
本身会检查字符是否为小写:cin >> choice;
choice = toupper(choice);
关于c++ - isupper(),islower(),toupper(),tolower()函数在c++中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20042792/