C++ string型の文字列を大文字から小文字へ、小文字から大文字へ変換する
スポンサーリンク
このドキュメントの内容は、以下の通りです。
- はじめに
- string型の大文字や小文字を変換する方法
- char型の文字列の大文字や小文字の変換する方法
- string型の大文字と小文字の変換のサンプルコード
- コンパイル
- 大文字に変換したデータを他のstring型の変数に格納する
- C++でcharの配列の大文字を小文字に変換する場合
- C++でcharの配列の小文字を大文字に変換する場合
- C言語で大文字を小文字、小文字を大文字に変換する方法
- C++関連記事
はじめに
アルファベットには、大文字と小文字が存在します。ソフトウェアで文字列を比較するときに、大文字・小文字を違うものとして扱うか、大文字・小文字を区別せずに比較するなど、いろいろなケースがあります。大文字・小文字を区別せずに比較する場合には、大文字を小文字に変換して、文字をそろえたり、逆に、小文字を大文字に変換してそろえた上で、比較することが多いのではないでしょうか。日本語だと、全角と半角で、数字でなやんだり、半角カナと全角のカナでの比較に苦しんだりする環境もあるのではないかと思います。
今回は、C++言語で、std::string型の文字列に対して、大文字を小文字に変換する、小文字を大文字に変換する、のやり方をご紹介いたします。std::transformを利用します。
string型の大文字や小文字を変換する方法
C++言語の std::string型の文字列の大文字から小文字へ変換したり、小文字から大文字へ変換するのに、 std::transform が使えます。char型の文字列の大文字や小文字の変換する方法
C++言語でchar型の文字列は、あまり扱わないとは思いますが、例を掲載します。C++言語ですが、C言語と同じように tolower() や toupper() を利用して変換できます。
string型の大文字と小文字の変換のサンプルコード
ここでは、std::string の文字列を大文字から小文字へ、小文字から大文字へ変換する例を紹介します。
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <string>
int
main (int argc, char *argv[])
{
std::string s("Yahoo Google");
transform (s.begin(), s.end(), s.begin(), toupper);
std::cout << s << std::endl;
transform (s.begin(), s.end(), s.begin(), tolower);
std::cout << s << std::endl;
::exit (EXIT_SUCCESS);
}
コンパイル
コンパイル方法は以下の通りです。実行結果は以下の通りです。$ c++ transform.cc $ ./a.out YAHOO GOOGLE yahoo google
大文字に変換したデータを他のstring型の変数に格納する
前述の例では、変換元のstd::stringと変換後のstd::stringは、同じでした。場合によっては、元のstd::stringを変更したくないということもあるでしょう。別のstd::stringに変換後のデータを格納する場合には、第三引数で別のstd::stringの変数を指定します。ここで重要になってくるのは、データを格納する変数のサイズを確保しておくことです。resize を利用して、サイズを確保します。変数dのリサイズを行わない場合、下記のプログラムは空行を表示します。
#include <string>
#include <iostream>
#include <algorithm>
int main(int argc, char *argv[]){
std::string s = "Google";
std::string d;
d.resize(s.size());
std::transform(s.begin(), s.end(), d.begin(), toupper);
std::cout << d << std::endl;
return 0;
}
C++でcharの配列の大文字を小文字に変換する場合
大文字を小文字に変換する場合には tolower() を利用します。ループを回して、1文字ずつ変換します。C++言語なのに、まさにC言語ですね。
#include <iostream>
#include <cctype>
int main(int argc, char const* argv[])
{
char str[] = "Test 2020";
char *p;
p = str;
while(*p) {
*p = tolower (*p);
p++;
}
std::cout << str << std::endl;
return 0;
}
コンパイル方法は以下の通りです。
c++ char_array_tolower.cpp
実行方法は以下の通りです。
$ ./a.out test 2020
C++でcharの配列の小文字を大文字に変換する場合
小文字を大文字に変換する場合には toupper() を利用します。ループを回して、1文字ずつ変換します。C++言語なのに、まさにC言語ですね。
#include <iostream>
#include <cctype>
int main(int argc, char const* argv[])
{
char str[] = "Test 2020";
char *p;
p = str;
while(*p) {
*p = toupper (*p);
p++;
}
std::cout << str << std::endl;
return 0;
}
コンパイル方法は以下の通りです。
c++ char_array_toupper.cpp
実行方法は以下の通りです。
$ ./a.out TEST 2020
C言語で大文字を小文字、小文字を大文字に変換する方法
C言語であれば、ポインタをぐるぐる回して、 tolower や toupper で、変換可能です。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void
strlower (const char *s)
{
char buf[strlen(s) + 1];
char *p = buf;
for ( ; *s; s++)
{
*p++ = tolower (*s);
}
*p = '\0';
printf ("%s\n", buf);
}
int
main(int argc, char *argv[])
{
strlower ("Yahoo");
strlower ("Google");
exit (EXIT_SUCCESS);
}
C++関連記事
[2007-08-22-1] CppUnitでC++の例外をテストする方法[2007-08-03-1] vimのオムニ補完でC++をもっと楽にする OmniCppComplete
[2007-04-12-2] boost regex 正規表現マッチ
参照しているページ (サイト内): [2009-09-06-1] [2007-04-12-2]
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12