Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 5.76 sscanf. Разбор строки на элементы. 16 ричная система в Кибор

Страниц (1): [1]
 

1. Kibor - 04 Сентября, 2020 - 13:01:56 - перейти к сообщению
Несколько обновлений:

1) Функция sscanf. Назначение - считывание информации из строки и ее разбор в соответствие с параметрами.

Описание ее можно найти в интернете. По логике C++

CODE:
sscanf ("22 : 05 : 17", "%d%s%d%s%d", #h, #r[0], #m, #r[1], #s);

Первый параметр: Строка которую будем разбирать.
Второй: Строка формат, в соответствие с которым будем разбирать первую строку.

Далее идут указатели на переменные, в которые будут записываться получаемые данные.
Количество данных параметров может быть от 1 до 20.
В виде указателей принимает
int, double, string, char

Возвращает реально считанное количество параметров.

Внимание:
Функция оперирует с таким количеством байт, ожидаемое значение которое указано в флаге формат.
То есть, если в флаге указано \x, это означает что в переменную должно быть записано 4 байта. И если указатель будет на char в 1 байт, это приведет к краху программы или ее неверной работе в дальнейшем.


Примеры:

CODE:
int p1, p2;

string input_s = "Возраст: 30 лет, рост:178 см";
sscanf(input_s,"Возраст: %d лет, рост:%d см", #p1, #p2);

messagebox (p1);
messagebox (p2);



CODE:
int h, m, s;
string r[2];
sscanf ("22 : 05 : 17", "%d%s%d%s%d", #h, #r[0], #m, #r[1], #s);
messagebox (h);
messagebox (r[0]);
messagebox (m);
messagebox (r[1]);
messagebox (s);



CODE:
string t;
double i;
sscanf ("Дробь 5.25", "%s%lf", #t, #i);
messagebox (t);
messagebox (i);



CODE:
string e;
int u;
sscanf ("Число_16_10 0x41", "%s%x", #e, #u);
messagebox (e);
messagebox (u);



CODE:
string s16="4"+"2";// \x42 = B
messagebox (s16);
string f;
sscanf (s16, "%x", #f);
messagebox (f);




===========================================================


Добавлена возможность указывать символы в строке и числа в 16 ричной системе:

CODE:
int a=0x4135656af;
messagebox (a+0x41);



Строка:
Спец символом указывающим что далее идет символ в 16 ричной системе является x
0x41 = число 65
^x41 = символ A
CODE:
string a="^xEF^xF0^xE8^xE2^xE5^xF2";
messagebox (a);
2. ivantu - 04 Сентября, 2020 - 13:26:24 - перейти к сообщению
Это что то типа: ?

regexsearch- Ищет в тексте участок по шаблону регулярного выражения
regexreplace- Ищет в тексте участок по шаблону регулярного выражения и заменяет его на указанный текст
3. Kibor - 04 Сентября, 2020 - 13:31:08 - перейти к сообщению
Нет. Это что то типа sscanf. Вернее она и есть.
В интернете много описания.

Powered by ExBB FM 1.0 Final