c/c++新手一个与指针混淆的人
我对c/c++编程相当陌生,目前我正在编写一些基本程序来接触这种语言。我的最新程序是一个简单的十六进制异或函数,它遵循。但是我已经有错误了,我假设我正在用指针做一些可怕的错误 以下是我程序的一部分:c/c++新手一个与指针混淆的人,c++,pointers,C++,Pointers,我对c/c++编程相当陌生,目前我正在编写一些基本程序来接触这种语言。我的最新程序是一个简单的十六进制异或函数,它遵循。但是我已经有错误了,我假设我正在用指针做一些可怕的错误 以下是我程序的一部分: const char* hex_char_to_bin(char c) { switch(toupper(c)) { case '0': return "0000"; case '1': return "0001";
const char* hex_char_to_bin(char c)
{
switch(toupper(c))
{
case '0': return "0000";
case '1': return "0001";
case '2': return "0010";
case '3': return "0011";
case '4': return "0100";
case '5': return "0101";
case '6': return "0110";
case '7': return "0111";
case '8': return "1000";
case '9': return "1001";
case 'A': return "1010";
case 'B': return "1011";
case 'C': return "1100";
case 'D': return "1101";
case 'E': return "1110";
case 'F': return "1111";
}
}
const char* hex_binary(const char* c){
std::string result = "";
for(int i = 0; i < strlen(c); i++){
result += hex_char_to_bin(c[i]);
}
return result.c_str();
}
int main(){
std::string s1 = "1c0111001f010100061a024b53535009181c";
std::string s2 = "686974207468652062756c6c277320657965";
const char* bin1 = hex_binary(s1.c_str());
const char* bin2 = hex_binary(s2.c_str());
std::cout << bin1 << "\n" << bin2 << std::endl;
return 0;
}
在这两个变量中,bin1/2是第二个十六进制字符串的二进制转换。显然,我的目标是将两个二进制字符串保存在不同的变量中,以便继续使用xor函数。有人能指出我在哪里没能实现我的目标吗?为什么?也欢迎其他提示 当主字符串对象不再活动时,不能使用c_str的结果。因此,您正在引用已释放的资源,并面临未定义的行为
<如果我是你,我会改变HoxByIX返回STD::String,只返回结果而不使用CySTR 如果你要使用C++停止使用char *,只使用STD::String。你首先需要决定你是否想学习C或C++,它们是完全不同的语言,请决定您希望学习哪种语言,然后将此问题的措辞改为单一语言。您问题的标题非常模糊。@chris的评论re:hex_binary return应该足够了
011010000110100101110100001000000111010001101000011001010010000001100010011101010110110001101100001001110111001100100000011001010111100101100101
011010000110100101110100001000000111010001101000011001010010000001100010011101010110110001101100001001110111001100100000011001010111100101100101