我在C ++中具有以下功能
char* Test::convertToSHA(const char* cc) {
const char* salt ="sh$^$#@!&7hbfvatfacv@@@@bagg=shjgvshvcbschj";
time_t currentTime;
time(¤tTime);
CCString startTimeString;
startTimeString.createWithFormat("%d", currentTime);
std::string s = cc;
s += startTimeString.getCString();
s += salt;
char *str = new char[strlen(s.c_str()) + 1];
int length=strlen(str);
unsigned char hash[length*2];
char hexstring[41];
sha1::calc(str,length,hash);
sha1::toHexString(hash, hexstring);
return hexstring;
}
在通话中我使用
char* output=NULL;
output= Test::convertToSHA("hello");
这导致我的代码崩溃。我返回字符串有问题吗?我如何从该函数返回?
我假设您正在使用此库。我觉得它声称是书面的C++
但没有利用C++
成语很奇怪。该函数修改指针,并且不返回任何内容,因此您确实需要一个局部变量。对您来说很幸运,std::string
s会很乐意接受一个char []
论点。
std::string Test::convertToSHA(const char* cc) {
// ...
char hexstring[41];
sha1::calc(str,length,hash);
sha1::toHexString(hash, hexstring);
std::string ret(hexstring);
return ret;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句