将加密的wstring写入wofstream

时间:2013-05-27 15:28:45

标签: c++ encryption wstring widechar 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个字)。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您需要使用fwrite()或等效的iostream来编写二进制数据。 fprintf()和eqivalents用于文本(如可读文本,而不是二进制文件)。