- Таблицу символов Американского стандартного кода для обмена информацией ASCII(American Standard Code for Information Interchange) или "аскей" по-русски, должен знать каждый программист, как математик должен знать таблицу умножения. Поэтому, я уверен, она хранится у каждого разработчика в отдельном файле. В одном из предыдущих постов я рассказывал, как можно программно выковырять эту таблицу из недр компьютера, но лучше скачать ее из интернета - там она представлена со всеми расшифровками управляющих символов. Стандартная таблица содержит 128(0-127)символов, а расширенная 256(0-255)символов. Каждый символ занимает один байт информации. Первые тридцать два являются управляющими, и выполняют какое-то действие появляясь в командной строке, например:
cout << char(7);
выдаст звуковой сигнал, а:
cout << char(8);
вернет курсор на одну позицию назад. Перевод каретки влево и перевод строки (0xD 0xA) в Hex-редакторе появляются в операционной системе Windows вместе:
и означают начало новой строки, в Linux используется только 0xA (спец. LF - Line Feed). В С и С++ есть собственные специальные символы:
\a - сигнал
\b - возврат курсора на шаг
\n - новая строка
\r - возврат каретки
\t - табуляция
\\ - косая черта
\? - знак вопроса
\" - кавычка
\' - одинарная кавычка
например если набрать:
wcout << "\tЭто верхняя строка \nЭто нижняя строка";
то вывод будет:
Это верхняя строка
Это нижняя строка
В С++ есть числовые и строковые переменные, int 0 и char 0 - это не одно и тоже(int от слова integer -числовая переменная, а char от слова character -строковая), в таблице они расположены в разных местах:
Чтобы присвоить числовой переменной строковой параметр, можно выполнить несложную бинарную процедуру:
int i = 5, x;
char s;//объявляем переменные
s = i + 0x30;
x = i + 0x30;
выводим результат:
cout << "i = " << i << endl;
cout << "s = " << s << endl;
cout << "x = " << x << endl;
и получаем:
i = 5
s = 5 \\это уже строковой параметр
x = 53
то есть мы переместили значение i в таблице на 0х30 и присвоили его строковой переменной. Обратите внимание на числовую переменную х, значение цифры 5 в таблице 53, мы работали в бинарном измерении где 0х30 соответсвует десятичному 48, а это 00110000 в бинарном виде, прибавляем пять 00000101 и получаем 00110101 что соответсвует 53. Как вообще выполняются бинарные операции, возьмем к примеру 3+1:
00000011 -это три
+00000001 -это один
--------------------
=00000100 -четыре
все операции производятся справа налево. Если, скажем так, встречаются две единицы, то они обнуляются и единица переносится влево, если там находится единица, то она так же обнуляется и переносится еще раз влево.
Если набрать в компиляторе:
cout << char(77);
то на экране командной строки отразится английская буква M.
И напоследок небольшая, прикольная программка:
(знак решетки)include <iostream>
(знак решетки)include <windows.h>
using namespace std;
main()
{
setlocale(LC_ALL,".OCP");
char s[]="Всем пока!";
for(int i = 0; i < sizeof(s); i++)
{
wcout << s[i];
Sleep(200);
}
return 0;
}
#C++ #ASCII #программирование