C++のstd::transform()の引数
transform(文字列の始点, 文字列の終点, 変換した文字列を代入する始点, 大文字or小文字, よく分からない)
目的
与えられたアルファベット文字列の一部の大文字/小文字を変換したい.
具体的には,B: 名前の確認 - AtCoder Beginner Contest 011 | AtCoder.
プログラム
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string S; cin >> S; transform(S.begin(), S.begin()+1, S.begin(), ::toupper); transform(S.begin()+1, S.end(), S.begin()+1, ::tolower); cout << S << endl; return 0; }
入出力
abcd #入力 Abcd #出力
まとめ
include
transform(begin, end, dst_begin, ::toupper/::tolower, よく分からない)
beginからendまでを変換する.
変換した文字列はdst_begin以降に代入される.たぶん別の変数でもOK.
::toupper/::tolowerどちらかで大文字/小文字の指定.
よく分からないやつはよく分からない(数値を与えて,その数値を引くっぽい?).
つまり,変換してそのまま置換するなら,beginとdst_beginが一致する.
追記
手元だと,toupper/tolowerで動いたけれど,AtCoderではCEしたので調べたところ,名前空間の問題が発生するらしい.
参考:Free Dynamic DNS(DDNS) by POP3,IMAP4,FTP,HTTP-BASIC for Home Server, VPS | MyDNS.JP