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);
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);
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);
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);
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);
messagebox (s16);
string f;
sscanf (s16, "%x", #f);
messagebox (f);
===========================================================
Добавлена возможность указывать символы в строке и числа в 16 ричной системе:
CODE:
int a=0x4135656af;
messagebox (a+0x41);
messagebox (a+0x41);
Строка:
Спец символом указывающим что далее идет символ в 16 ричной системе является x
0x41 = число 65
^x41 = символ A
CODE:
string a="^xEF^xF0^xE8^xE2^xE5^xF2";
messagebox (a);
messagebox (a);