繁体   English   中英

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;    

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

cout << !!input;

!! 是标准化布尔值的常见习语。 它产生0时的值是01时的值是非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)的输出存储在一个整数变量中,例如valuecout << 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM