islower函数根据输入输出布尔值0或1

islower function to output boolean value of 0 or 1 depending on input

本文关键字:布尔值 输入输出 函数 islower      更新时间:2023-10-16

我尝试了以下操作,但没有得到0或1。问题是如何使这个程序在不使用C++中的条件语句的情况下打印出布尔值0或1。

char input;
char output;
cout << "Input A Character: n";
cin >> input;
input = islower(input);
cout << input;    

要获得01,可以使用双!操作:

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)的输出存储在一个整数变量中,例如valuecout << 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.