字符串输入xor加密程序

时间:2014-05-11 02:06:46

标签: c++ encryption xor

描述:
我正在尝试编写一个有趣的基本程序,它将输入一个字符串/短语然后xor加密它,最后cout加密短语。我正在使用mac,所以我将使用xcode进行编译并在终端中运行它。

问题:
我输入一个可以加密的字符串时出错,请参阅下面的代码:

代码:

#include <iostream>
#include <string>
using namespace std;

int main ()
{
string mystr;
cout << "What's the phrase to be Encrypted? ";
//getline (cin, mystr);

char string[11]= getline (cin, mystr); //ERROR: Array must be initialized with brace-enclosed initializer
cout << "Phrase to be Encrypted: " << mystr << ".\n";
char key[11]="ABCDEFGHIJ";  //The Encryption Key, for now its generic
for(int x=0; x<10; x++)
{
    string[x]=mystr[11]^key[x];
    cout<<string[x];
}
return 0;
}

帮助:
请确认并解释或提供我收到上述错误代码的原因。

2 个答案:

答案 0 :(得分:1)

您没有正确调用getline。当您已将string定义为类型时,您也尝试将其用作变量。我会尝试更像这样的事情:

getline(cin, mystr);

string result;

for (int i=0; i<10; i++) {
    result.push_back(mystr[i] ^ key[i]);
    cout << result[i];
}

答案 1 :(得分:0)

getline的返回类型是一个流,您无法将其分配给char数组。要初始化一个数组,你必须使用:

char s[10] = {'h', 'i', 0};

或者是char数组的简写:

char s[10] = "hi";

在你的问题中,你可能想要使用注释掉的getline语句和

const char* string = mystr.c_str();