C++:将字符串转换为字符数组

C++ : Converting String into an array of Char

本文关键字:字符 数组 转换 字符串 C++      更新时间:2023-10-16

我已经设法将字符数组转换为字符串,但现在我想反过来,我尝试在我的代码中使用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. res在复制到字符串之前不会在 DecToBin 中以零结尾,
  2. res未在BinToDec中初始化,
  3. 你反转二进制表示形式,但尝试以与编写它相同的方式读回它。

在我看来,这就像家庭作业,所以我把修复代码留给你。如果你真的需要这样做,那么实现这一目标的更简单的方法是(在任何地方都不会被接受为家庭作业)是

#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());
}