- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用户输入的字符串 string date
(格式 DD-MM-YYYY),我需要按照这个 key 0=W, 1=x, 2=7, 3=%, 4=m,依此类推...
当我输入以下 12-06-1983
时,这是我得到的输出 012FFAD8
- 这是错误的
根据 key ,12-06-1983
的输出应该是 x7dW#dx&4%
下面是我的代码,请帮我找出错误。此外,我是否以正确的方式解决这个问题?有没有更简单的方法来做到这一点?请记住,这是我的 C++ 类(class)中的初学者作业。
string key = date;
string encryptedKey[10];
for (int i = 0; i < key.length(); i++) {
if (key[i] == '0' ) {
encryptedKey[i] = 'W';
}
else if (key[i] == '1') {
encryptedKey[i] = 'x';
}
else if (key[i] == '2') {
encryptedKey[i] = '7';
}
else if (key[i] == '3') {
encryptedKey[i] = '%';
}
else if (key[i] == '4') {
encryptedKey[i] = 'm';
}
else if (key[i] == '5') {
encryptedKey[i] = 'G';
}
else if (key[i] == '6') {
encryptedKey[i] = '#';
}
else if (key[i] == '7') {
encryptedKey[i] = 'P';
}
else if (key[i] == '8') {
encryptedKey[i] = '4';
}
else if (key[i] == '9') {
encryptedKey[i] = '&';
}
else if (key[i] == '-') {
encryptedKey[i] = 'd';
}
else {
cout << "\nError.\n";
}
}
cout << encryptedKey;
最佳答案
您必须将 string encryptedKey[10]
替换为 string encryptedKey = "0000000000";
并且您的代码按预期工作。这并不聪明,但它确实有效。
最好使用嵌套的 if 语句使用 switch-case。
在您的代码中不需要 if 或 switch-case。只需使用 map 来翻译您的输入字符串。
string key = "12-06-1983";
string encryptedKey = "";
map<char, char> replacements = {
{ '0', 'W' },
{ '1', 'x' },
{ '2', '7' },
{ '3', '%' },
{ '4', 'm' },
{ '5', 'G' },
{ '6', '#' },
{ '7', 'P' },
{ '8', '4' },
{ '9', '&' },
{ '-', 'd' }
};
for (int i = 0; i < key.length(); i++) {
encryptedKey += replacements.at(key[i]);
}
cout << "Key: " << encryptedKey;
map 定义了哪个字符要替换为哪个其他字符。现在只需遍历输入并查找应将哪个字符放置在 encryptedKey 中而不是给定的映射中。
这是 cpp.sh 提供的在线示例代码
关于C++:如何将字符串中的每个字符转换为相应的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46944000/
我在 Java 中遇到异常处理问题,这是我的代码。当我尝试运行此行时出现编译器错误:throw new MojException("Bledne dane");。错误是: exception MojE
我刚刚开始学习asp.net。在你们的支持下,我希望我能从这个论坛学到更多东西。 我的问题是, 我在 asp.net 页面中有一个 TabContainer1,因为每个选项卡面板中有多个类似 (60)
我是一名优秀的程序员,十分优秀!