1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ASCIIコードをおぼえずにC++の大文字小文字変換

Posted at

上の記事の様にtolower()などを使わずに、大文字、小文字の変換をするときはASCIIコードを小文字に減算して大文字に変換、大文字を加算して小文字に変換するというやり方を多く見かけます。
その場合、大文字を減算、小文字を加算しないようにASCIIコードで変換する範囲を指定します

C++.C++
//https://webkaru.net/clang/conversion-string-lower-to-upper-case/より引用
   /* アルファベットの小文字なら変換 */


    if(str[i]>=97&&str[i]<=122)
      str[i]=str[i]-32;

でも文字のことを考えているときに数字のことを考えるのは面倒くさいので小文字の場合は小文字を引いて大文字を足す、大文字の場合は大文字を引いて小文字を足す、という風にしました。

小文字

qiita.C++


  /* アルファベットの小文字なら変換 */


    if('a'<=str[i]&&str[i]<='z')
      str[i]=char(str[i]-'a'+'A'); //char()で括らないと数字として表示される
//('a'-'a'==0 → 0+'A'=='A'),('b'-'a'==1 → 1+'A'=='B')....
//('z'-'a'==25 → 25+'A'=='Z')

大文字

qiita.C++


  /* アルファベットの大文字なら変換 */


    if('A'<=str[i]&&str[i]<='Z')
      str[i]=char(str[i]-'A'+'a'); //char()で括らないと数字として表示される
    //('A'-'A'==0 → 0+'a'=='a'),('B'-'A'==1 → 1+'a'=='b')....
    //('Z'-'A'==25 → 25+'A'=='Z')

(-'a'+'A')*(1)で小文字変換

(-'a'+'A')*(-1)で大文字変換

とできるなら応用ができそう

1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?