我的问题非常简短,就是如何将字母转换为字符的大写,在我的情况下,字符可以转换为小写。前任:
char key[16];
key = "A"
我怎样才能进行转换,以便我的 char 是小写的。我试过使用 tolower 但它必须是一个整数,例如:
key = tolower(*key);
就我而言,它返回以下错误:
incompatible types in assignment of 'int' to 'char [16]'|
我的问题非常简短,就是如何将字母转换为字符的大写,在我的情况下,字符可以转换为小写。前任:
char key[16];
key = "A"
我怎样才能进行转换,以便我的 char 是小写的。我试过使用 tolower 但它必须是一个整数,例如:
key = tolower(*key);
就我而言,它返回以下错误:
incompatible types in assignment of 'int' to 'char [16]'|
但是,答案很长,让我们开始吧!
简短的回答。
你可以
std::tolower
这样使用:长答案。
我们有两个版本
std::tolower
:在标题中
<cctype>
:在标题中
<locale>
:标头版本
<cctype>
属于 C 库,而标头版本<locale>
属于 C++ 库。如果你使用 C++ 编程,你应该使用<locale>
.除了上一段说的,为什么版本的
<locale>
比版本的<cctype>
?:char
) 转换为整数(接收 aint
)并返回int
必须转换回字符 ( ) 的整数(返回char
)。charT
) 并使用语言区域设置将其转换为小写;因此,它不仅考虑了所有字符类型(char
、wchar_t
和)而不进行数据转换,char16_t
而且char32_t
还考虑了它们所用的语言!因此,要使用配置的语言设置小写字符,您将执行以下操作:
其他要记住的事情。
这样做太可怕了!
您请求 16 个字符,然后重新分配指针,这在 C++ 中是不允许的,这就是您收到错误的原因
incompatible types in assignment of 'int' to 'char [16]'
,要创建一个key
包含"A"
您必须这样做的指针:考虑到您的问题-> 使用 C++ 小写一个字符,例如eferion 已经提到并由 PaperBirdMaster在他的类型错误问题中显示的详细信息,您可以使用 ASCII 表中存在的差异
is not assignable
在大写和相同但小写的字符之间,可以说,小写与大写的相同字符相距 32 个位置,知道这一点,您可以执行以下操作(char 上的简单示例):
标准输出:
测试Ideone
PS:要将小写字母转为大写,您只需使用
-= 32
example 而不是+= 32
.