C ++:将String转换为Char数组

时间:2014-12-13 13:24:31

标签: c++ arrays string

我设法将一个char数组转换为一个字符串,但现在我想反过来,我尝试在我的代码中使用strcpy但它似乎没有给我我想要的东西。预期结果应为5,结果我得到40959

#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <algorithm>



using namespace std;

string DecToBin(int);
int BinToDec(string);

int main()
{
    int x = 5;
    string y = DecToBin(x);
    reverse(y.begin(), y.end());
    int z = BinToDec(y);
    cout << z << endl;

}


string DecToBin(int num)
{

    char res[16];
    for (int n = 15; n >= 0; n--)
    {
        if ((num - pow(2, n)) >= 0)
        {
            res[n] = '1';
            num -= pow(2, n);
        }
        else
        {
            res[n] = '0';
        }

    }

    for (int n = 15; n >= 0; n--)
    {
        res[n];
    }

    return res;

}

int BinToDec(string num)
{

    char x[16];
    strcpy(x, num.c_str());
    int res;
    for (int n = 15; n >= 0; n--)
    {
        if (x[n] == '1')
        {
            res += pow(2, n);
        }
    }

    return res;
}

1 个答案:

答案 0 :(得分:1)

我可以找到以下错误:

  1. res在将DecToBin复制到字符串中之前未在res中终止,
  2. BinToDec未在#include <iostream> #include <bitset> #include <string> using namespace std; string DecToBin(int num) { std::bitset<16> b(num); return b.to_string(); } int BinToDec(string num) { std::bitset<16> b(num); return static_cast<int>(b.to_ulong()); }
  3. 中初始化
  4. 您反转二进制表示,但尝试以与编写它相同的方式读取它。
  5. 这对我来说就像是家庭作业,所以我将代码修复给你。如果你真的需要这种有效的东西,一种更简单的方法来实现这一点(不会被接受为任何地方的家庭作业)是

    {{1}}