Tolower()返回一个数字而不是小写形式
tolower() is returning a number instead of a the lowercase form?
我正在编写一个程序,该程序要求输入字母,并根据输入将字母和出现分组。我正处于代码末尾,我正在尝试将大写字母转换为小写。我正在尝试这样做:
cout << tolower(char('A'+i)) << " " << alphabets[i] <<endl;
但是tolower()
输出一个数字而不是字母的小写版本?例如,输入"aaaa"
给了我:
97 4
和输入"bbbbb"
给了我:
98 5
但是当我取出tolower
时,"aaa"
之类的输入将是:
3
我不明白为什么会发生这种情况。
tolower
是一种古老的函数,从1970年代的C继承,在函数签名可靠地存在之前,并且在人们真正关心不同整数类型的表达式之前。
因此,它忽略类型并返回int
中的字符。三个选择:
- 演员:
static_cast< char >( std::tolower( 'A' + i ) )
。 - 使用变量:
char lower = std::tolower( 'A' + i );
- 使用较新的过载:
std::tolower( 'A', std::locale() )
。
tolower
均接受并返回int, std::cout
不知道返回的 int
代表 char
值。您可以通过转换为char
来解决此问题:
cout << static_cast<unsigned char>(tolower(char('A'+i)))
<< " " << alphabets[i] << endl;
一个简单的打字将解决此问题。例如:
char letter = 'J';
cout << char(tolower(letter)) << endl;
相关文章:
- 函数如何使用引用返回所需的数字?
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- 返回 int 中可被 2 c++ 整除的所有数字的总和
- C++ python 中的函数返回数字而不是字符串
- 使用非托管导出将字符串从 C# 返回到C++将返回数字
- 我的代码应该接受一个数字,并返回字母等级或"Grade is not valid"但 else 语句不起作用
- 如何返回一串字母数字字符中的最大值(例如-1A003B3)?
- 将 MPFR 数字转换为字符串并返回
- C++ 递归:返回数字的最小偶数
- typeid.name 返回派生类类型之前的数字
- Fibbonaci 递归代码返回错误值,始终返回下一个数字
- 为什么我的阶乘数查找器返回以C++输入的数字?(已编辑)
- 尝试编写函数尝试从字符串中提取数字,但它返回不相关的数字
- 随机函数在循环中调用时返回相同的数字!C++
- 将字符转换为ASCII返回数字太大
- 为什么此范围基于语句返回一个数字太低的范围
- 根据另一个数字的可整除性返回子数组中的索引
- 如果数组中有重复的数字,如何返回'false'?
- 递归计算满足条件的值数并返回该数字
- C++余数以较高的数字返回 7