C++ 插入加密
是一個課程作業,寫的挺糾結,記錄一下。
一開始用字元陣列寫,走了很多彎路,當然這過程中也進一步理解了一下字元陣列。靜態陣列不能直接插入,要操作就要複製到另一個數組裡,下標就很多很混亂。
後來才想到用應該用 string 寫,string 直接用 insert 下標插入不要太簡單。
當然不管是字元陣列還是 string,都要注意 ‘\0’ 的問題。
最後陣列的程式碼就不貼了,100來行,雖然功能實現了,我以後都不想再看見,太蠢了。
用 string 只寫了30來行, 對比慘烈。
#include <iostream> #include <string> using namespace std; int main() { string str, result; string a, b; char A[5] = {'a', 'b', 'c', 'd', 'e'}; //加密用的其他字元,迴圈用 int n; int len; int i, j; cin>>str; cin>>n; len = str.length(); result = str;//先複製過來,再插入 for(i=0,j=n; i<len/n; i++,j++) { a = A[i%5]; result.insert(n*i+j, a); } if(len%n!=0)//題目要求最後一個必須是其他字元 { b = A[i%5]; result.insert(result.length(), b); }
cout<<result<<endl;
return 0; }
最後再囉嗦一下,string 系統會自動新增 ‘\0’, 複製插入的話不用擔心丟掉問題。如果用字元陣列,一定要注意 ‘\0’ 的問題,因為陣列初始化的時候可能沒有 ‘\0’。