cout<<tolower(ch);这样写为什么不可以
为什么这样写是对的 ch=tolower(ch);cout<<ch;
while (!isalpha(ch)) continue; 与 if (isdigit(ch)) { cin.get(ch); } 它们两个有什么不同
问题1
tolower返回值是int类型,因此你的两种写法并不等价。ch=tolower(ch)实际上是有一个隐式类型转换的,它等价于 ch=(char)tolower(ch)
因此,把最开始的代码写成 ‘cout << (char)tolower(ch);’ 就能正确输出了。
问题2
isalpha是判断字符是不是英文字母,范围是a-z + A-Z,而isdigit判断字符是否是数字,它的范围是0-9, 但字符并非只有数字和字母,在字母和数字范围外的字符,!isalpha(ch) 并不等价于 isdigit(ch)。例如,对于字符'#',这两个函数的输出结果就不一样。