tolower() 返回一个数字而不是小写形式?

Sam*_*Sam 0 c++ tolower

我正在编写一个程序,要求输入字母,并根据输入对字母和出现次数进行排序。我在代码末尾,正在尝试将大写字母转换为小写字母。我正在尝试这样做:

cout << tolower(char('A'+i)) << " " << alphabets[i] <<endl;
Run Code Online (Sandbox Code Playgroud)

tolower()输出的是数字而不是字母的小写版本?例如,输入"aaaa"给我:

97 4

输入"bbbbb"给我:

98 5

但是当我取出 时tolower,输入如下"aaa"

A 3

我不明白为什么会发生这种情况。

Pot*_*ter 5

tolower是一个从 1970 年代 C 语言继承下来的古老函数,当时函数签名还没有可靠地存在,而且在人们真正关心表达式的不同整数类型之前。

因此,它忽略类型并返回int. 三种选择:

  1. 投掷:static_cast< char >( std::tolower( 'A' + i ) )
  2. 使用变量:char lower = std::tolower( 'A' + i );
  3. 使用更新的重载std::tolower( 'A', std::locale() )