Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c/c++新手一个与指针混淆的人_C++_Pointers - Fatal编程技术网

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";

我对c/c++编程相当陌生,目前我正在编写一些基本程序来接触这种语言。我的最新程序是一个简单的十六进制异或函数,它遵循。但是我已经有错误了,我假设我正在用指针做一些可怕的错误

以下是我程序的一部分:

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