есть строка типа string состоящая из букв нужно перевести буквы в их двоичный код я пробовал написать функцию
но при выходе эта функция возвращает значения строки то есть он выводит двоичный код а работать с ним нельзя либо выдает ошибку
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
| string bin_cod(string str)
{
for (char c : str)
{ std::bitset<8> bs(c);
std::cout << bs;
}
std::cout << std::endl;
return 0;
}
string bin_cod(string str)
{
for (char c : str)
{ std::bitset<8> bs(c);
std::cout << bs;
}
std::cout << std::endl;
return 0;
}
// прототипы функций
BOOL WINAPI SetConsoleOutputCP(UINT wCodePageID); // установка кодовой страницы в
//поток вывода
BOOL WINAPI SetConsoleCP(UINT wCodePageID); // установка кодовой страницы в поток
//ввода, где wCodePageID - идентификатор кодовой таблицы
int main()
{
//setlocale(LC_ALL, "rus");
SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
string str;
int i, k = 0;
cout << "Введите строку: ";
getline(cin, str);
/*for (int i = 3; i< str.length(); i += 2)
{
if (str[i] == 1); k++;
}
if (k % 2 == 0)
{
str[1] = 0;
}
else
{
str[1] = 1;
}*/
// заменяем все прописные на строчные
for (i = 0; i <= str.length(); i++)// определение длины строки str
{
int istr = int(str[i]);//ASCII таблица перевод
if ((istr >= 65 && istr <= 90) || (istr >= -64 && istr <= -33)) str[i] = char(istr + 32);
}
//удаляем все пробелы
cout << "массив после удаления пробелов" << endl;
i = 0;
while (i <= str.length())
{
if (str[i] == ' ') { str.erase(i, 1); }
else { i++; }
}
cout << str << endl;
//удаление символов
cout << "строка после удаления посторонних символов" << endl;
i = 0;
while (i <= str.length())
{
int istr = int(str[i]);
//if (str[i] == ' ') { str.erase(i, 1); }
if ((istr >= 1 && istr <= 31) || (istr >= 33 && istr <= 64) || (istr >= 91 && istr <= 96) || (istr >= 123 && istr <= 126)) { str.erase(i, 1); }
else { i++; }
}
cout << str << endl;
//перевод в бинарную системму
cout << "строка " << str << " в бинарной системме" << endl;
int size = 0;
convertStrToBin(str, size);
bin_cod(str);
//cout << str << endl;
//отмечаем контрольные биты
cout << "строка с выделенными контрольными битами обозначенными p " << endl;
for (int i = 0; i < str.length(); i++)
{
if (i == 0) str.insert(i++, "p");
if (i == 1) str.insert(i++, "p");
if (i == 3) str.insert(i++, "p");
if (i == 7) str.insert(i++, "p");
if (i == 15) str.insert(i++, "p");
}
cout << str << endl;
system("pause");
} |
|