在C++中构造ASCII二进制代码,并运行到一个奇怪的错误中

在C++中构造ASCII二进制代码,并运行到一个奇怪的错误中,c++,string,binary,ascii,C++,String,Binary,Ascii,我正在构建一个程序,将ASCII转换为二进制,然后将二进制转换为ASCII。到目前为止,我已经做了一些事情,逻辑似乎是合理的,但每次我试图编译它时都会遇到错误。此范围中未声明“二进制”错误。我试着四处寻找答案,但什么也找不到。下面是我的代码。当我试图将它从终端粘贴到这个文件中时,一些格式可能已经弄乱了 #include <iostream> #include <fstream> #include <cmath> #include <stdlib.h

我正在构建一个程序,将ASCII转换为二进制,然后将二进制转换为ASCII。到目前为止,我已经做了一些事情,逻辑似乎是合理的,但每次我试图编译它时都会遇到错误。此范围中未声明“二进制”错误。我试着四处寻找答案,但什么也找不到。下面是我的代码。当我试图将它从终端粘贴到这个文件中时,一些格式可能已经弄乱了

#include <iostream> 
#include <fstream> 
#include <cmath> 
#include <stdlib.h> using namespace std;

void A_to_B(const char*);

void B_to_A(const char*);

int main(void) {

  cout <<"ASCII/BINARY Converter" << endl;

  cout <<"============================ \n \n" << endl;
 char response;

  char garbage[50];

  cout <<"1. ASCII to Binary converter" << endl;

  cout <<"2. Binary to ASCII Converter" << endl;

  while(response !='1' && response !='2' && response !='N' && response !='n') {

    cout <<"\n Enter \"1\" or \"2\" to specify task. Enter \"N\" to quit: ";

    cin >> response;

    cin.getline(garbage, 50);

    if(response !='1' && response !='2' && response !='N' && response !='n') cout <<"The value you entered was invalid. Please try again" << endl;

  }

  if(response=='N' || response=='n') {

    cout <<"User cancel" << endl;

    exit(0);

  }

  char text[501];

  cout <<"Enter the text/code you want to convert: ";

  cin >> text;

  if(response=='1') {

    A_to_B(text);

  }

  else {

    B_to_A(text);

  }

  cout <<"Conversion finished" << endl;

  return 0;

}

void A_to_B(const char* input) {

  int ascii;

  int length=strlen(input);

  cout <<" ";

  for(int x=0;

  x < length;

  x++) {

    ascii=input[x] char* binary_reverse=new char [9];

    char* binary=new char [9];

    int y=0;

    while(ascii !=1) {

      if(ascii % 2==0) {

        binary_reverse[y]='0';

      }

      else if(ascii % 2==1) {

        binary_reverse[y]='1';

      }

      ascii /=2;

      y++;

    }

    if(ascii==1) {

      binary_reverse[y]='1';

      y++;

    }

    if(y < 8) {

      for(;

      y < 8;

      y++) {

        binary_reverse[y]='0';

      }

    }

    for(int z=0;

    z < 8;

    z++) {

      binary[z]=binary_reverse[7-z];

    }

    cout << binary;

    delete [] binary_reverse;

    delete [] binary;

  }

  cout << endl;

}

void B_to_A(const char* input) {

  int length=strlen(input);

  int binary[8];

  int asciiNum=0;

  char ascii;

  cout <<" ";

  int z=0;

  for(int x=0;

  x < length / 8;

  x++) {

    for(int a=0;

    a < 8;

    a++) {

      binary[a]=(int) input[z] -48;

      z++;

    }

    int power[8];

    int counter=7;

    for(int x=0;

    x < 8;

    x++) {

      power[x]=counter;

      counter--;

    }

    for(int y=0;

    y < 8;

    y++) {

      double a=binary[y];

      asciiNum +=a* pow(2, b);

    }

    ascii=asciiNum;

    asciiNum=0;

    cout << ascii;

     }
  }

这是两条语句,在这两条语句之间需要一个分号

ascii=input[x] char* binary_reverse=new char [9];
比如:

ascii=input[x];
char* binary_reverse=new char [9];

您应该从文件的顶部到底部修复编译错误。早期的错误可能会在以后导致一连串的错误。嗨,阿米尔,我刚刚完成了程序及其运行,但是如果用户没有为二进制输入1或0以外的内容,我希望它显示一条错误消息,然后让该程序提示用户再次输入。所有的帮助都会很好。