qq_35113235
Kerris7
采纳率75%
2018-05-13 12:53

MFC C++ 编辑框中的字符导出至文件中的问题

5

对于已经生成的私钥,把它导出到本地*.key 文件

能成功导出,但是导出的文件中的内容与原私钥不符,是乱码,是导出的方式有问题吗?

代码如下:

 void CRSADialog::OnBnClickedBtnExportKey2()   //导出私钥
{
    // TODO: 在此添加控件通知处理程序代码
    CFileDialog dlg(FALSE, L"key", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"*.key||");
    if (dlg.DoModal() == IDOK) {
        CString fileName = dlg.GetPathName();
        CFile file(fileName, CFile::modeCreate | CFile::modeWrite);
        CArchive ar(&file, CArchive::store);

        UpdateData(TRUE);
        ar << m_priKey;
        ar.Close();
    }
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • itgather itgather 3年前

    char* buffer="hello cfile";
    _CFile fWrite(_T("path"),CFile::modeWrite|CFile::modeCreate|CFile::typeBinary);
    fWrite.Write(buffer,strlen(buffer);
    fWrite.Flush();
    fWrite.Close();
    直接将原始内容二进制写入就好了。

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 3年前

    肯定格式不对,CArchive的输出显然是它私有的格式,你保存你自己的对象还可以,但是用它存储标准格式的文件注定悲剧。
    你需要用 CFile 代替 CArchive,并且写入正确的格式。我不是很清楚 .key 是什么格式,你应该查询下它的格式规范来写入字节。

    点赞 评论 复制链接分享