2013-02-12 38 views
0

此函数接受字符串作为参数,然后对数字进行加密并应将加密字符串写入文件。在主要的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; 
} 

提前感谢!

+0

谢谢Tomcaa。它现在工作! – aegon52 2013-02-13 00:08:02

回答

0

Encipherer::encipherer

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

应该是

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

此外,在这两种如果块:

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

应该成为

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

shift定义在其他地方?并且如果代码复制正确,您似乎在最后的else之前有一个}不应该在那里。

相关问题