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

{
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;
}
在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函数或其他函数将其格式化成两个字符宽度的十六进制字符串。
加个string引用类型的函数参数
void char2Calculate_512(string &str)
{
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];
}
str = sha512Code;
}