将异或函数转换为返回char*而不是字符串
Convert XOR function to return char* not string
我使用字符串编码这个异或,但我现在需要返回一个字符*。我已经尝试了几个小时了,尽管我不太习惯和char一起工作。我想我遗漏了什么。
string XOR(string s, int key){
string res = "";
for (size_t temp = 0; temp < s.size(); ++temp){
res += s[temp] ^ ((key + temp) % 255);
}
return res;
}
我怎么能改变这得到一个char*返回?
编辑澄清:我需要一个char*: char* XOR(string s, int key)
编辑:这是错误,但在@JonathanGrynspan和@john的帮助下进行了更正,现在我的最终版本是:
我知道这并不漂亮,但它确实是你想要的:
char* XOR(string s, int key){
string res = "";
for (size_t temp = 0; temp < s.size(); ++temp){
res += s[temp] ^ ((key + temp) % 255);
}
char * cstr = new char [res.length()+1];
copy(res.begin(),res.end(),cstr);
return cstr;
}
您的输入字符串是否可重写?如果是这样,这是最简单、可能也是最快的方法:
void XOR( char *input, int key ){
for(int temp = 0; input[temp] != ' '; ++temp){
input[temp] ^= (key + temp) % 255;
}
}
它改变给定的字符串,而不是返回新的东西。但是由于您很有可能在输出中得到