islower函数根据输入输出布尔值0或1
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
,可以使用双!
操作:
cout << !!input;
!!
是规范布尔值的常用用法。当值为0
时产生0
,当值为非0
时产生1
。
有些人不喜欢双重否定,使用!=
等式运算符可以得到相同的结果:
cout << (input != 0);
islower
应返回0。
请记住,只有0是false
。即使函数返回-1,它仍然是一个true
值。
请查看此处的参考资料。
编辑:
您可以尝试使用input = 1 && islower(input);
。这将强制true
值变为1。
使用int
而不是char
:
int result = islower(input);
cout << result;
请注意,ispower只保证返回"0"或"不是0的东西"。您可以通过编写cout << (result ? 1 : 0)
来解决这个问题,但我不确定您的需求是否不允许这样做。
0和1都是不可打印的字符,这就是您看不到输出的原因。如果您将输出重定向到一个文件并使用十六进制编辑器打开,您将看到结果。
将结果存储在布尔值中,或强制转换结果:cout << (bool) input;
除0==true之外的所有值。0==错误。
#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
输入:a,bIsLower:2输入字符:
A
输入:A,bIsLower:0输入字符:
z
输入:z,bIsLower:2
您可以将islower(input)
的输出存储在一个整数变量中,例如value
和cout << value
int value = islower(input);
cout << input;
要打印布尔值,请使用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.
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 重载更少,则运算符返回相反的布尔值
- 将此布尔值传递给此函数的最有效方法是什么?
- 字符的输入/输出操作
- C++ 中文件输入输出中的长长 v/s int
- 如何设置 c++ 类的布尔值?
- 使用 MAKEWORD / MAKEWPARAM 使用布尔值而不是布尔值
- 将 10 个线程与原子布尔值同步
- 为什么这个程序不输出布尔值?
- 如何比较多个布尔值以通过特定输出?UE4 C++
- 使用数组和布尔值在输出未知时从输出中删除逗号
- 将值输入到结构数组 + 打印输出
- 重载运算符<<输出布尔值.为什么
- 使用字符串流输入/输出布尔值
- islower函数根据输入输出布尔值0或1
- C++正确的布尔值和双输入
- 计数排序我的输入是1,4,3,1但输出是垃圾值1,1,3输入不正确