(最初のブログ、私は誰もが!初心者をサポートすることを願って、または問題より深い洞察場合は、してください、共有、コメント領域に記入してください!)
問題のI.説明
CIN(ファイル)から読み込み、COUT(ファイル)にエンコードされた文字を書き込み、暗号化プログラムを書きます。
あなたはこの単純な暗号化方式を使用することがあります:文字cの暗号化形式は 、C ^キー、[i]は、 キーは コマンドライン引数として渡された文字列です。プログラムは、内の文字使用 のキーを すべての入力が読み込まれるまで周期的に。同じキーで再暗号化する符号化されたテキストは、元のテキストを生成します。どのキー(またはnull文字列)が渡されない場合は、何もencrptionは行われません。
第二に、問題が解決され、
1.thinking
(読み取り用)in.txt、out.txtを(暗号化結果メモリ)、original.txt(復号化された結果が格納されている):3つのファイルを作成します。
読み取りが失敗した場合は、例外処理、その後の暗号化操作のために、ファイルをお読みください。
2.important
①。(主に^排他的論理和演算はこちら)ビット操作C ++を学びます
②。いくつかのファイルの処理
3.process
①。XOR演算について
図から分かるように、戻り値は、XOR演算int型、文字^ int型で、実際のchar暗黙の型変換に行きました。
加えて、我々は中out.txtを読んでからintにin.txtファイルから文字を読み取る必要があります。
1または異なる数の二倍自体:いくつかの特定のアプリケーションへの排他的論理和演算を持っています。2.排他的ORジャム元の値0の数(10011001 00000000 ^ - > 10011001)
②。ファイルについて読み込み、EOF
EOFの詳細説明:https://www.cnblogs.com/dolphin0520/archive/2011/10/13/2210459.html
このファイルは、それぞれがEOFを読み出した後かどうかを判断する必要があり、ロードされます。もちろん、それは特定の状況に応じて書かれています。この質問では、本体(!F_in.eofは())ファイルが読み込まれた場合でも、予測できない問題が発生するが、読み取り書き込みサイクルは、条件を決定するが、サイクルが終了していない場合は!
4.result
共有ソース
1の#include <iostreamの> 2の#include <fstreamの> 3の#include <CStringの> 4 5 使用 名前空間STDを、 6 7 INTメイン(int型 ARGC、チャー ** ARGV) 8 { 9 はifstreamフィン(" in.txt " )。 10 もし(!{fin.is_open()) 11 はcout << " ファイルを開くことができません\" in.txt \」" ; 12 リターン - 1 。 13 } 14 15 のfstream FOUT(" out.txtを" ); 16 IF(!{Fout.is_open()) 17。 COUT << " を開くことができませんファイル\" out.txtを\ " " ; 18は リターン - 1。; 19 } 20である 21は IF(strlenを(ARGV [ 1 ])== 0 ){//コマンドラインパラメータを受信していない場合、暗号化と復号化は実行されない 22である 文字列TEMP; 23は COUT << " ..ノー暗号鍵" << ENDL; 24 しばらく(FIN >>TEMP){ 25 FOUT << TEMP。 26 } 27 リターン 0 。 28 } 29 30 チャーTEMP。 31 INT iは= 0 。 32 33 ながら(フィン。得る(TEMP))//加密运算 34 { 35 FOUT <<(TEMP ^のargv [ 1 ] [strlenを(ARGV [ 1 ]) - strlenをI%(ARGV [ 1 ])])<< ' ' ; 36 I ++ ; 37 } 38 39 fin.close(); 40 fout.close()。 41 42 裁判所未満は<< " 暗号化が行われました。" << てendl 43 << " 今すぐ再暗号化を開始します。" << てendl; 44 45 はifstreamのf_in(" out.txtを" )。 46 もし(!{f_in.is_open()) 47 はcout << " ファイルを開くことができません\" out.txtを\」" ; 48 リターン - 1 。 F_OUTのofstreamの(" original.txt " ;) 52は、 IF(!{f_out.is_open()) 53は、 COUT << " を開けませんファイル\" original.txt \ " " ; 54は、 リターン - 1。; 55 } 56は、 57れる I = 0 ; 58 int型TEMP_1; 59 ながら(f_in >> TEMP_1){//復号化演算、キャストがここで必要とされる出力キャラクタ 60 F_OUT << チャー((^ TEMP_1 ARGV [ 1。 [strlenを(ARGV [] 1。 ] ) - I%strlenを(ARGV [ 1])]))。 61 I ++ ; 62 } 63 64 COUT << " 再暗号化を行っている。" << ENDLと、 65 リターン 0 ; 66 }