加密功能不是应该输出字符串

时间:2013-02-12 21:33:42

标签: string inputstream outputstream

此函数将字符串作为参数,然后对数字进行加密,并将加密的字符串写入文件。主要的eText似乎没有得到任何功能,我无法弄清楚为什么。

功能定义:

string Encipherer::encipherer(string plainMessage){

    int i = plainMessage.length();
    string eMessage;

    cout << i << endl;

    for(i = 0; i >= plainMessage.length(); i++){
            if(plainMessage[i] >= 65 && plainMessage[i] <= 90){
                    if(plainMessage[i] + shift > 90){
                            eMessage[i] += plainMessage[i] - 26 + shift;
                    }

                    else{
                            eMessage += plainMessage[i] + shift;
                    }
            }

            else if(plainMessage[i] >= 97 && plainMessage[i] <= 122){
                    if(plainMessage[i] + shift > 122){
                            eMessage[i] += plainMessage[i] - 26 + shift;
                    }
                    else{
                            eMessage += plainMessage[i] + shift;
                    }
            }
}

            else{
                    eMessage += plainMessage[i];
            }

}
return eMessage;
}

主要功能:

int main(){

string plainMessage, eText;
string fileName = "inputText.txt";
ofstream outputText;
        outputText.open ("outputText.txt");

Encipherer E(5);

plainMessage = E.encipherFromFile(fileName);

eText = E.encipherer(plainMessage);

outputText << eText;

outputText.close();


return 0;
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

Encipherer::encipherer

for(i = 0; i >= plainMessage.length(); i++){

应该是

for(i = 0; i < plainMessage.length(); i++){

此外,在两个if块中:

                    eMessage[i] += plainMessage[i] - 26 + shift;

应该成为

                    eMessage += plainMessage[i] - 26 + shift;

是否在其他地方定义了shift?如果代码被正确复制,您似乎在最后}之前有一个else,不应该存在。