2013-05-27 66 views
0

我有一個簡單的「加密」函數,它與wstring變量一起使用,我想用wofstream將此函數的結果寫入文件。將加密的wstring寫入wofstream

這是我的代碼:

void save_file() { 
    wstring text = L"Text to be encrypted. The text is encrypted but not saved"; 
    wstring enctext = encrypt(text); 

    wprintf_s(L"%s\n", enctext); 
    wofstream output_stream; 
    output_stream.open(L"myfile.enc"); 
    output_stream<< enctext ; 
    output_stream.close(); 
} 

wstring encrypt(wstring decrypted) { 
    wstring encrypted; 
    for (unsigned int i=0; i<decrypted.length(); i++) { 
     encrypted += wchar_t(int(decrypted[i]) + 128); 
    } 
    return encrypted; 
} 

所以,與這片......代碼的問題是,雖然wprintf_s函數輸出整個加密的文本,在書面文件中我只看到裏面的人物ASCII範圍(或至少是我看來)。加密的文本將被保存,直到找到未知字符(在控制檯中通過顯示)。我想保存任何字符,並且我希望它們保存爲寬字符(每個字1個字)。我怎樣才能做到這一點?

+0

您使用的是Windows嗎? –

回答

1

您需要使用fwrite()或iostream等效於寫入二進制數據。 fprintf()和等價物用於文本(如可讀文本,而不是二進制文件)。