【发布时间】: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的文档了吗?如果你这样做了,你就会知道它是在<algorithm>中定义的。你包括了吗? -
s = text 此时“text”不只是一个空字符串吗?
-
你的作业写错了。
-
你的加密和你的解密一样
-
提醒:C++ 中的字符区分大小写,也就是 'Q' != 'q'。另请参阅“toupper
,tolower”和transform。
标签: c++ compiler-errors