[英]islower function to output boolean value of 0 or 1 depending on input
我尝试了以下操作,但没有得到0或1。问题是如何在不使用C ++中的条件语句的情况下使该程序打印出布尔值0或1。
char input;
char output;
cout << "Input A Character: \n";
cin >> input;
input = islower(input);
cout << input;
要获得0
或1
,可以使用double !
操作:
cout << !!input;
!!
是标准化布尔值的常见习语。 它产生0
时的值是0
和1
时的值是非0
。
有些人不喜欢双重否定,使用!=
等于运算符可以得到相同的结果:
cout << (input != 0);
使用int
代替char
:
int result = islower(input);
cout << result;
注意,仅保证islower返回“ 0”或“非0的值”。 您可以通过编写cout << (result ? 1 : 0)
来解决该问题,但是我不确定您的要求是否不允许这样做。
如果字符不是小写字母,则islower
应该返回0。
请记住,只有0为false
。 即使函数返回-1,它仍然是一个true
值。
在此处查看参考。
编辑:
您可以尝试使用input = 1 && islower(input);
。 这将迫使您的true
价值变为1。
0和1都是不可打印的字符,这就是为什么看不到输出的原因。 如果将输出重定向到文件并使用十六进制编辑器打开,则会看到结果。
将结果存储为布尔值,或将结果cout << (bool) input;
为: cout << (bool) input;
除0外的每个值== true。 0 ==错误。
您可以将islower(input)
的输出存储在一个整数变量中,例如value
和cout << value
int value = islower(input);
cout << input;
#include <iostream>
using namespace std;
int
main()
{
char input;
cout << "Input A Character: \n";
cin >> input;
unsigned int bIsLower = islower(input);
cout << "input: " << input << ", bIsLower: " << bIsLower << endl;
return 0;
}
输入一个字符:
一种
输入:a,bIsLower:2输入一个字符:
一种
输入:A,bIsLower:0输入一个字符:
ž
输入:z,bIsLower:2
要打印布尔值,请使用bool类型的变量。
char input;
bool output;
// ^^^^
cout << "Input A Character: \n";
cin >> input;
output = islower(input);
// ^^^^^^ Store result in a bool variable (otherwise why have output)
cout << output;
// ^^^^^^^ Now print it.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.