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

时间:2012-03-22 20:58:34

标签: c++

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

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

8 个答案:

答案 0 :(得分:5)

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

cout << !!input;

!!是规范化布尔值的常用习惯用法。当值为0时,它会产生0,而当值为非1时,会产生0

有些人不喜欢双重否定,你可以使用!=相等运算符获得相同的结果:

cout << (input != 0);

答案 1 :(得分:1)

使用int代替char

int result = islower(input);
cout << result; 

请注意,islower仅保证返回“0”或“不为0的内容”。您可以通过编写cout << (result ? 1 : 0)来解决此问题,但我不确定您的要求是否禁止这样做。

答案 2 :(得分:1)

当字符不是小写字母时,

islower应返回0。

请记住,只有0是false。即使函数返回-1,它仍然是true值。

查看参考here

编辑:

您可以尝试使用input = 1 && islower(input);。这将强制您true值变为1。

答案 3 :(得分:1)

0和1都是不可打印的字符,这就是你看不到输出的原因。如果将输出重定向到文件并使用十六进制编辑器打开,您将看到结果。

将结果存储在布尔值中,或者转换结果:cout << (bool) input;

答案 4 :(得分:0)

除0 == true之外的每个值。 0 == false。

答案 5 :(得分:0)

您可以将islower(input)的输出存储在整数变量中,例如valuecout << value

int value = islower(input);
cout << input;

答案 6 :(得分: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,bIsLower:2

     

输入字符:
  一个
  输入:A,bIsLower:0

     

输入字符:
  ž
  输入:z,bIsLower:2

答案 7 :(得分:0)

要打印布尔值,请使用 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.