2015-10-03 26 views
1

我試圖以非常簡單的方式加密文件。例如,將文本aabcdee轉換爲a2bcde2。ofstream.put();不寫整數?

但是,當我執行文件時,我在輸出文件中得到了^ Cbcde^C而不是a2bcde2。

我在猜測ofstream.put();不會將整數寫入文件?我如何以正確的方式去做這件事?

#include <iostream> 
#include <fstream> 
#include <cstdlib> 

using namespace std; 

int main() 
{ 
    ifstream input; 
    ofstream output; 
    char kar; 
    input.open ("file.txt", ios::in); 
    if (! input) 
    { 
     cout << "File not opened!" << endl; 
     return 1; 
    } 

    output.open ("output.txt", ios::out); 
    char prevkar = '\n'; 
    kar = input.get(); 
    int rep = 1; 

    while (! input.eof()) 
    { 
     if (kar == prevkar) 
     { 
      rep++; 
      kar = input.get(); 

     } 
     else 
     { 
      if (rep > 1) 
      { 
       output.put(rep); 
      } 
      output.put (kar); 
      prevkar = kar; 
      kar = input.get(); 
     } 
    } 
    input.close(); 
    output.close(); 

    return 0; 
} 
+0

你用十六進制觀衆?^C顯示在控制檯上? – user2743554

回答

0

output.put(rep); 

你輸出rep作爲一個字符。所以無論顯示什麼字符,整數值爲rep。在這種情況下是^C。如果你想輸出的rep的實際價值,那麼你應該使用>>

output >> rep; 

你也可以使用

output.put('0' + rep); 

這隻會工作,以輸出0-9