【发布时间】:2013-04-06 20:43:57
【问题描述】:
我阅读了 Bjarne Stroustrup 的《C++ 编程语言》一书,他的练习之一是进行简单的加密。我输入一些东西,用 std::cin 读取它并加密它+将加密的文本打印到屏幕上。我就是这样做的:
在我的 int main() 中:
std::string read;
std::cin >> read;
encript(read);
我的功能(只是一部分):
void encript(const std::string& r){
std::string new_r;
for(int i = 0; i <= r.length(); i++)
{
switch(r[i])
{
case 'a':
new_r += "a_";
break;
case 'b':
new_r += "b_";
break;
case 'c':
new_r += "c_";
break;
case 'd':
new_r += "d_";
break;
... //goes on this way
}
}
std::cout << new_r << std::endl;
我现在的问题是我真的必须写下每一个字符吗?我的意思是这些只是非大写字符。还有特殊字符、数字等。
还有其他方法吗?
【问题讨论】:
-
如果 C++11 没问题,
new_r += {r[i], '_'};。这需要一个由字符和下划线组成的初始化列表(想想数组初始化)并将其添加到字符串的末尾。 -
你可以得到a的数量和计算其他的
-
@Bakudan,除非它们不能保证是连续的。
-
@chris 如果我这样做,每个字符都会变成 '_' ,对吗?那我就不能解密了?
-
不是你的问题,但这是一个错误
for(int i = 0; i <= r.length(); i++)。应该是for(int i = 0; i < r.length(); i++)。
标签: c++ encryption character