Опубликован: 22.12.2015 | Уровень: для всех | Доступ: платный
Лекция 7:

Использование строк

< Лекция 6 || Лекция 7 || Лекция 8 >

Копирование строки

Преобразование строк или поиск строк часто используются при разработке приложений. В этом примере мы поговорим о том, как находить положение строки и преобразовывать строки в числа, используя базовые APIs, написанные на C.

Создайте новый проект 'StringSample'. Откройте файл исходного кода и внесите следующие изменения в функцию create_base_gui().

/* Label*/
ad->label = elm_label_add(ad->conform);
elm_object_text_set(ad->label, "Hello EFL");
evas_object_size_hint_weight_set(ad->label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(ad->conform, ad->label);
elm_label_line_wrap_set(ad->label, EINA_TRUE);
/* Show window after base gui is set up */
evas_object_show(ad->win);
show_string_result(ad->label);

elm_label_line_wrap_set() - это API, который определяет автоматическую упаковку строки в метку.

show_string_result() - это функция, которая отображает результат преобразования строк. Добавьте новую функцию выше create_base_gui().

static void
show_string_result(Evas_Object *label)
{
char buf[PATH_MAX], str1[100];
char *str2;
strcpy(str1, "12345");
sprintf(buf, "[%s]", str1);
elm_object_text_set(label, buf);
}

strcpy() - это API, который копирует строку. Первый параметр показывает адрес памяти, где будет храниться строка, в то время как второй параметр показывает данные об оригинальной строке. В нашем случае мы ввели текст '12345' в строковую переменную 'str1.'

sprintf() - это API, который создает новую строку заданного типа.

Теперь, давайте запустим пример. Мы видим, что текст заключен в квадратные скобки.


Запрос длины строки

В этом примере мы запросим длину строки, сохраненной в переменной str1. Добавьте код в конце функции show_string_result().

strcpy(str1, "12345");
sprintf(buf, "[%s]", str1);

int length = strlen(str1);
sprintf(buf, "%s<br>Length : %d", buf, length);

elm_object_text_set(label, buf);

strlen() - это API, который запрашивает и затем возвращает длину строки. Str1 — это символьный массив, так, что он имеет фиксированную длину. В таких случаях будет возвращаться длина строки от начала строки до символа конца строки (\0).

Запустите пример.


Извлечение заданной длины символов от начала строки

В этом разделе мы выделим первые три символа из переменной str1. Добавьте код в конец функции show_string_result().

sprintf(buf, "%s<br>Length : %d", buf, length);

str2 = eina_stringshare_add_length(str1, 3);
sprintf(buf, "%s<br>Front 3 : %s", buf, str2);

elm_object_text_set(label, buf);

eina_stringshare_add_length() - это API, который извлекает заданную длину символов от начала строки. Первый параметр показывает данные об оригинальной строке, второй параметр — длину извлекаемой последовательности символов. Будет возвращаться извлеченная строка. Запустите пример. Символы '123' были выделены от начала строки '12345.'


Извлечение заданной части строки

В этом разделе мы поговорим о том, как выделять определенное количество символов из строки, указав начальную точку выделения. Добавьте код в конец функции show_string_result().

sprintf(buf, "%s<br>Front 3 : %s", buf, str2);
str2 = eina_stringshare_add_length(str1 + 2, 3);
sprintf(buf, "%s<br>substr 3 : %s", buf, str2);
elm_object_text_set(label, buf);

Мы передали в качестве первого параметра функции eina_stringshare_add_length() function значение 'str1 + 2'. Сделав это, мы выделили символы '345.'

Запустите пример. Три символа будут выделены из строки '12345', начиная с третьей позиции.


Преобразование строки в числовое значение

Для преобразования строки в число вы можете использовать функцию atoi(). Добавьте код в конец функции show_string_result().

sprintf(buf, "%s<br>substr 3 : %s", buf, str2);

int i = atoi(str1);
sprintf(buf, "%s<br>string to int '%s' + 3 = %d", buf, str1, i + 3);

elm_object_text_set(label, buf);

atoi() - это API, который преобразует строку в тип int.

Atol() - это API, который преобразует строку в тип long type.

Atof - это API, который преобразует строку в тип float.

Запустите пример. Убедитесь в том, что строка '12345' будет преобразована в число, а к результату будет прибавлено число 3, как показано на экране.


< Лекция 6 || Лекция 7 || Лекция 8 >