c++ - 无法找到并替换 vector 的所有出现

标签 c++

  • 我应该能够使用 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/

相关文章:

c++ - 特征:将数组映射到矩阵大小未知的矩阵

c++ - 无法将参数 1 从 int 转换为 int && 错误

c++ - istringstream operator>> 返回值如何工作?

c++ - hashmap 的内存高效数据结构 (c++)

c++ - 单例的段错误

c++ - 如果你不应该在析构函数中抛出异常,你如何处理其中的错误?

c++ - OpenCV:在处理后的图像中选择轮廓

c++ - 如何使用fork创建并行子进程

c++ - 打印最长公共(public)子序列

c++ - 在软件渲染器中模仿顶点/片段着色器的设计模式是什么?