我应该能够使用 vector 解码 secret 消息。
我已经写出所有 vector ,并且可以找到出现的第一个实例。
我也一次只能找到一个 vector 。
我应该能够解码像“,$]:”这样的消息(应该拼写为“tops”)。
我没有包括整个 vector 列表,因为那会太长:
... sym.at(i)="$"; letr.at(i) = "o"; ++i; sym.at(i)="]"; letr.at(i) = "p"; ++i; sym.at(i)="}"; letr.at(i) = "q"; ++i; sym.at(i)=";"; letr.at(i) = "r"; ++i; sym.at(i)=":"; letr.at(i) = "s"; ++i; sym.at(i)=","; letr.at(i) = "t"; ++i; sym.at(i)="%"; letr.at(i) = "u"; ++i; sym.at(i)="<"; letr.at(i) = "v"; ++i; sym.at(i)="."; letr.at(i) = "w"; ++i; sym.at(i)=">"; letr.at(i) = "x"; ++i; sym.at(i)="/"; letr.at(i) = "y"; ++i; sym.at(i)="?"; letr.at(i) = "z"; ++i; cout << "\nEnter decrypted message: "; //asking dycypted message cin >> message; found = false; for (i = 0; i < numCar; ++i) { // find letter index if (sym.at(i) == message) { found = true; cout << "decrypted message is: "; cout << letr.at(i) << endl; } } ...
最佳答案
无法找到并替换 vector 的所有出现:
- 显然你不能,假设
message == ",$]:"
for
循环中的条件sym.at(i) = = message
永远不会变为true
。因此,永远不会评估if
子句中的代码。
如何轻松做到这一点
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string sym("$]};:,%<.>/?");
std::string let("opqrstuvwxyz");
std::string inpt;
while (std::getline(std::cin, inpt)) {
for (std::size_t i(0), ie(inpt.size()); i < ie; ++i) {
std::size_t idx = std::distance(sym.begin(), std::find(sym.begin(), sym.end(), inpt[i]));
if (idx < sym.size()) std::cout << let[idx];
}
std::cout << std::endl;
}
return 0;
}
Demo.
关于c++ - 无法找到并替换 vector 的所有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209424/