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日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵