Строковые функции в Pawn: полный справочник

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Работа со строками - основа программирования. Разберем все важные функции.

format
Форматирование строки:
Код:
new string[128];
format(string, sizeof(string), "Игрок: %s, Очки: %d", name, score);
// Результат: "Игрок: Player1, Очки: 100"

Спецификаторы формата:
- %d - целое число
- %i - целое число
- %s - строка
- %f - число с плавающей точкой
- %x - шестнадцатеричное число
- %c - символ

strlen
Длина строки:
Код:
new text[64] = "Hello";
new len = strlen(text); // len = 5

strcmp
Сравнение строк:
Код:
if(!strcmp(string1, string2)) // строки равны
if(!strcmp(string1, string2, true)) // сравнение без учета регистра

strfind
Поиск подстроки:
Код:
new pos = strfind(text, "search", true); // поиск с начала
if(pos != -1)
{
    // подстрока найдена на позиции pos
}

strmid
Извлечение подстроки:
Код:
new source[32] = "Hello World";
new dest[32];
strmid(dest, source, 0, 5, sizeof(dest));
// dest = "Hello"

strins
Вставка строки:
Код:
new text[64] = "Hello World";
strins(text, "Beautiful ", 6, sizeof(text));
// text = "Hello Beautiful World"

strdel
Удаление части строки:
Код:
new text[64] = "Hello World";
strdel(text, 5, 11);
// text = "Hello"

strcat
Объединение строк:
Код:
new text1[64] = "Hello ";
new text2[32] = "World";
strcat(text1, text2, sizeof(text1));
// text1 = "Hello World"

strval
Преобразование строки в число:
Код:
new text[32] = "123";
new number = strval(text); // number = 123

valstr
Преобразование числа в строку:
Код:
new number = 123;
new text[32];
valstr(text, number);
// text = "123"

Примеры использования
Код:
// Проверка команды
if(!strcmp(cmdtext, "/help", true))
{
    // команда /help
}

// Извлечение параметров команды
new cmd[32], params[128];
sscanf(cmdtext, "s[32]s[128]", cmd, params);

// Форматирование сообщения
new message[256];
format(message, sizeof(message), "[%s] %s: %s", 
    GetTimeString(), GetPlayerName(playerid), text);

// Поиск и замена
ReplaceString(text, "old", "new");

ReplaceString(string[], find[], replace[])
{
    new pos = strfind(string, find);
    if(pos != -1)
    {
        strdel(string, pos, pos + strlen(find));
        strins(string, replace, pos, sizeof(string));
    }
}

Важные моменты:
- Всегда проверяйте размер буфера перед операциями
- Строки заканчиваются нулевым символом
- Используйте sizeof() для определения размера массива
- Будьте осторожны с переполнением буферов

Правильная работа со строками - залог стабильного кода!
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху