2016-02-27 270 views
-4

以下代码确保我们接受一个字符串,它只是通过将其转换为小写字母来打印字符串中的大写字母。代码如何确保这一点?字符串可能如下。输入字符串r可以任意这些:带大写字母和小写字母的字符串转换

Kira 
hates 
is 
he 
L 

for(size_t j = 0; j < r.size(); j++) 
    if(r[j] <= 'Z') 
     r[j] = (char) (r[j] + 'a' - 'A'); 
+0

该问题已被编辑,所以不要现在投票。而是回答。 –

+0

@PaulRooney是的代码工作,但我对其工作的理解不是很好或清晰 –

+0

看看字符'a-z'和'A-Z'的acii代码。如果你在windows上使用字符映射应用程序。对于哪些字符是'if(r [j] <='Z')'true?数字术语中“a” - “A”的价值是多少?对于任何匹配的小写字母和大写字母,它是相同的值吗?例如''z' - 'Z''? –

回答

1

那么首先if(r[j] <= 'Z')检查如果字符值是十进制小于'z'或90。如果你看看ascii表,你会知道字母A到Z是十进制的65到90.所以它之间的任何值都是大写字母。

因此,在Kira的示例中,它检查K,其值为75. if(75 <= 90)将评估为true。

下一步是将字母改为小写。因此,ascii表中的小写字母a和大写字母A相距32,或者使用'a' - 'A',其值为32.所以,由于大写字母首先出现在表格上,您希望将32添加到大写字母以获取小写字母。 所以小写字母是从97到122.所以当K是75 + 32 = 107时,当你在acii表中看到它的十进制时,它的k

相关问题