【问题标题】:Cipher Code Wont Work密码不起作用
【发布时间】:2017-08-02 14:53:20
【问题描述】:

我最近开始学习 c++,我一直在尝试创建解决方案来挑战自己,其中一个挑战是加密文本并最终将其保存到文本文件的密码。我当前使用的代码无法编译,因为它无法识别替换语句,这是我目前的代码。

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <string>

int main()
{
// declare all variables
std::string text;
std::string s;
std::string uncipheredText;

//Introducing the program
std::cout << "Welcome to Cipher." << std::endl;

//Asks the user to input the text they want to encrypt and saves it to the unciphered text variable.
std::cout << "Enter the text you want to cipher" << std::endl;
std::cin >> s;

//replaces all characters in the variable "s"
std::replace(s.begin(), s.end(), 'Q', 'M');
std::replace(s.begin(), s.end(), 'E', 'B');
std::replace(s.begin(), s.end(), 'T', 'C');
std::replace(s.begin(), s.end(), 'U', 'Z');
std::replace(s.begin(), s.end(), 'O', 'S');
std::replace(s.begin(), s.end(), 'L', 'F');
std::replace(s.begin(), s.end(), 'J', 'H');
std::replace(s.begin(), s.end(), 'G', 'K');
std::replace(s.begin(), s.end(), 'D', 'P');
std::replace(s.begin(), s.end(), 'A', 'I');
std::replace(s.begin(), s.end(), 'X', 'Y');
std::replace(s.begin(), s.end(), 'V', 'R');
std::replace(s.begin(), s.end(), 'N', 'W');
std::replace(s.begin(), s.end(), ' ', '#');


s = text;

std::cout << "Encrypted Text: " << text << std::endl;

//replaces all characters in the variable "s"
std::replace(s.begin(), s.end(), 'Q', 'M');
std::replace(s.begin(), s.end(), 'E', 'B');
std::replace(s.begin(), s.end(), 'T', 'C');
std::replace(s.begin(), s.end(), 'U', 'Z');
std::replace(s.begin(), s.end(), 'O', 'S');
std::replace(s.begin(), s.end(), 'L', 'F');
std::replace(s.begin(), s.end(), 'J', 'H');
std::replace(s.begin(), s.end(), 'G', 'K');
std::replace(s.begin(), s.end(), 'D', 'P');
std::replace(s.begin(), s.end(), 'A', 'I');
std::replace(s.begin(), s.end(), 'X', 'Y');
std::replace(s.begin(), s.end(), 'V', 'R');
std::replace(s.begin(), s.end(), 'N', 'W');
std::replace(s.begin(), s.end(), ' ', '#');

s = uncipheredText;

std::cout << "Decrypted Text: " << uncipheredText << std::endl;

/*
ofstream myfile;
myfile.open("dump.txt");
myfile << text;
myfile.close();
*/

return 0;
}   

【问题讨论】:

  • 你看std::replace的文档了吗?如果你这样做了,你就会知道它是在&lt;algorithm&gt; 中定义的。你包括了吗?
  • s = text 此时“text”不只是一个空字符串吗?
  • 你的作业写错了。
  • 你的加密和你的解密一样
  • 提醒:C++ 中的字符区分大小写,也就是 'Q' != 'q'。另请参阅“toupper, tolower”和transform

标签: c++ compiler-errors


【解决方案1】:

正如@Algirdas Preidžius 在 cmets 中所述,您需要包含算法库。另外,你复制了这段代码:

//replaces all characters in the variable "s"
std::replace(s.begin(), s.end(), 'Q', 'M');
std::replace(s.begin(), s.end(), 'E', 'B');
std::replace(s.begin(), s.end(), 'T', 'C');
std::replace(s.begin(), s.end(), 'U', 'Z');
std::replace(s.begin(), s.end(), 'O', 'S');
std::replace(s.begin(), s.end(), 'L', 'F');
std::replace(s.begin(), s.end(), 'J', 'H');
std::replace(s.begin(), s.end(), 'G', 'K');
std::replace(s.begin(), s.end(), 'D', 'P');
std::replace(s.begin(), s.end(), 'A', 'I');
std::replace(s.begin(), s.end(), 'X', 'Y');
std::replace(s.begin(), s.end(), 'V', 'R');
std::replace(s.begin(), s.end(), 'N', 'W');
std::replace(s.begin(), s.end(), ' ', '#');

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2015-02-24
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多