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 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题