циклы — преобразование символов в двоичный файл в переполнении стека

Я написал это, и когда я запускаю его, он дает мне все возможности. Я хочу, чтобы он просто дал мне тот, который соответствует моему символу, который я напечатал. Можете ли вы сказать мне, что здесь не так?
Заранее спасибо.

#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
char letter='b';
while(letter!='end')
{
cout<<"What is the letter you wanna convert?"<<endl;
cin >> letter;
if(letter='A') {cout<<"01000001"<<endl;}
if(letter='B') {cout<<"01000010"<<endl;}
if(letter='C') {cout<<"01000011"<<endl;}
if(letter='D') {cout<<"01000100"<<endl;}
if(letter='E') {cout<<"01000101"<<endl;}
if(letter='F') {cout<<"01000110"<<endl;}
if(letter='G') {cout<<"01000111"<<endl;}
if(letter='H') {cout<<"01001000"<<endl;}
if(letter='I') {cout<<"01001001"<<endl;}
if(letter='J') {cout<<"01001010"<<endl;}
if(letter='K') {cout<<"01001011"<<endl;}
if(letter='L') {cout<<"01001100"<<endl;}
if(letter='M') {cout<<"01001101"<<endl;}
if(letter='N') {cout<<"01001110"<<endl;}
if(letter='O') {cout<<"01001111"<<endl;}
if(letter='P') {cout<<"01010000"<<endl;}
if(letter='Q') {cout<<"01010001"<<endl;}
if(letter='R') {cout<<"01010010"<<endl;}
if(letter='S') {cout<<"01010011"<<endl;}
if(letter='T') {cout<<"01010100"<<endl;}
if(letter='U') {cout<<"01010101"<<endl;}
if(letter='V') {cout<<"01010110"<<endl;}
if(letter='W') {cout<<"01010111"<<endl;}
if(letter='X') {cout<<"01011000"<<endl;}
if(letter='Y') {cout<<"01011001"<<endl;}
if(letter='Z') {cout<<"01011010"<<endl;}

if(letter='a') {cout<<"01100001"<<endl;}
if(letter='b') {cout<<"01100010"<<endl;}
if(letter='c') {cout<<"01100011"<<endl;}
if(letter='d') {cout<<"01100100"<<endl;}
if(letter='e') {cout<<"01100101"<<endl;}
if(letter='f') {cout<<"01100110"<<endl;}
if(letter='g') {cout<<"01100111"<<endl;}
if(letter='h') {cout<<"01101000"<<endl;}
if(letter='i') {cout<<"01101001"<<endl;}
if(letter='j') {cout<<"01101010"<<endl;}
if(letter='k') {cout<<"01101011"<<endl;}
if(letter='l') {cout<<"01101100"<<endl;}
if(letter='n') {cout<<"01101110"<<endl;}
if(letter='o') {cout<<"01101111"<<endl;}
if(letter='p') {cout<<"01110000"<<endl;}
if(letter='q') {cout<<"01110001"<<endl;}
if(letter='r') {cout<<"01110010"<<endl;}
if(letter='s') {cout<<"01110011"<<endl;}
if(letter='t') {cout<<"01110100"<<endl;}
if(letter='u') {cout<<"01110101"<<endl;}
if(letter='v') {cout<<"01110110"<<endl;}
if(letter='w') {cout<<"01110111"<<endl;}
if(letter='x') {cout<<"01111000"<<endl;}
if(letter='y') {cout<<"01111001"<<endl;}
if(letter='z') {cout<<"01111010"<<endl;}
getche();
}
return 666;

}

-5

Решение

Что касается вашего заголовка, и, игнорируя тривиальные ошибки в вашем коде, самое простое решение

cout<<"What is the letter you wanna convert?"<<endl;
cin >> letter;
cout << bitset<8>(letter).to_string() << endl;

Нет необходимости в жестко закодированном преобразовании.


Также обратите внимание, что если этот вопрос касается академических соображений, и вас попросят разработать решение для генерации строки с использованием универсального алгоритма, ваше решение получит F школьная записка от меня.

Вы, вероятно, ожидали использовать ℅2 Операции по модулю правильно в цикле (не было ли это частью ваших последних лекций?).

Если нет, я настоятельно рекомендую пойти с std::bitset решение, а не изобретать велосипед.

2

Другие решения

Ты хочешь if (letter == ...)не if (letter = ...)

«Можете ли вы сказать мне, что здесь не так?»

Когда вы делаете:

if (foo = bar)

…вы влияете на стоимость bar в foo, Если в результате bar значение не ноль, условие истинно.

Добро пожаловать в программирование.

1