# C++でrot関数
tags: 情報
ROT13とは?
前に触れたことがあるんですが, 暗号化の手法です
アルファベットを13文字分ずらす手法のことをROT13言います
今回はROT13を拡張子, 13以外でも利用できるようにしてC++で実装します
実装
実装は下のrot
のようにしました
C++をよく分かってなさすぎたんですが, Cで言うgetline
的な関数があったんですね...(前回の実装も同じようにすればよかった...)
この関数では引数に文字列と文字列をずらす数を取ります. 文字列のうちアルファベットだけをずらし, それ以外の文字はそのままにするということにしました
#include <iostream> #include <string> std::string rot(std::string, int); int main(int argc, char const* argv[]) { std::string input; std::getline(std::cin, input); auto output = rot(input, 13); std::cout << output << std::endl; return 0; } std::string rot(std::string input_str, int rot_num) { std::string res = ""; for (auto& ch : input_str) { if ('a' <= ch && ch <= 'z') { res += ((ch - 'a') + rot_num) % 26 + 'a'; } else if ('A' <= ch && ch <= 'Z') { res += ((ch - 'A') + rot_num) % 26 + 'A'; } else { res += ch; } } return res; }
実行してみると以下のように動きます
$ g++ -o rot rot.cc $ ./rot eeic is the BEST!!! rrvp vf gur ORFG!!!
ちなみに
未だに命名規則がよく分かっていないので間違えているかも...