VCLZ-42 2023-02-17 11:35 采纳率: 72.2%
浏览 28
已结题

C++该怎样高效的把遍历后的字符串作为函数参数返回?

我该怎样把遍历后的字符串作为函数参数返回?
本人是初学者,最近用MFC封装了一个加密程序,想把加密后计算出的字符串作为函数参数返回,请问怎样用string封装

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/470697406676115.jpg "#left"

unsigned char2Calculate_512()
{
    int i;
    extern char putin[102400];
    cin.get(putin, 102400);


    for (unsigned int i = 0; i < strlen((char*)putin); i++) {
        printf("%02x", putin[i]);
    }
    unsigned char sha512Code[64];
    SHA512_CB sha512;
    SHA512Init(&sha512);
    SHA512Update(&sha512, (unsigned char*)putin, strlen((char*)putin));
    SHA512Final(&sha512, sha512Code);

    //Md5加密后的32位结果
    for (i = 0; i < 64; i++)
    {
        cout<< sha512Code[i];
    }
    return (unsigned char)sha512Code;
}


  • 写回答

3条回答 默认 最新

  • zmy1127 2023-02-17 14:56
    关注

    在C++中,你可以使用std::string类来封装字符串,并将其作为函数的返回值。在你的代码中,可以这样修改函数的返回类型和返回值:

    #include <string>
    
    std::string Calculate_512()
    {
        // your code here
        unsigned char sha512Code[64];
        // ...
        // convert sha512Code to a hex string
        std::string result;
        char buffer[3];  // to hold the hex string of each byte
        for (int i = 0; i < 64; i++) {
            sprintf(buffer, "%02x", sha512Code[i]);
            result += buffer;
        }
        return result;
    }
    

    在函数中,你可以将计算出的sha512Code转换成一个十六进制字符串,并将其存储到std::string对象result中,最后将result作为函数的返回值。

    需要注意的是,在将字节转换成十六进制字符串时,需要使用sprintf函数或其他函数将其格式化成两个字符宽度的十六进制字符串。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 2月17日

悬赏问题

  • ¥30 求一下解题思路,完全不懂。
  • ¥30 关于#硬件工程#的问题:求一下解题思路
  • ¥15 运筹学对偶单纯行法构造扩充问题
  • ¥20 XP系统的老电脑一开机就提示找不到rundll.exe,付费求解
  • ¥15 milvus查询出来的score怎么转换成0-1之间的相似性
  • ¥15 多ip服务器站群如何搭建l2tp服务器
  • ¥15 lvgl V9移植到linux开发板
  • ¥15 VB.net中在窗体中创建一个button控件来关闭窗体,但是提示错误,我该怎么办
  • ¥15 网上下载好的程序但是arduinoIDE编程报错,运行不了,哪里出错了,能具体给改一下吗
  • ¥15 Sharepoint JS开发 付费技术指导