Суббота, 20.04.2024, 19:04
Bosh sahifa Registratsiya RSS
Xush kelibsiz, Гость
[ Yangi xabarlar · Qatnashuvchilar · Forum qoidalari · Qidirish · RSS ]
  • Страница 1 из 1
  • 1
Форум » Test category » C++ programmirovaniye » Уменьшение количества операторов (Уменьшение количества операторов)
Уменьшение количества операторов
BamBiRДата: Четверг, 27.06.2013, 06:55 | Сообщение # 1
Рядовой
Guruh: Администраторы
Xabarlar: 15
Sovg`alar: 0
Репутация: 0
Status: Offline
Уменьшение количества операторов

Чтобы определить конец символьной строки, каждая из предыдущих программ использовала следующий цикл while:

while (*string != '\0')

Как уже обсуждалось, символ NULL ('\0') представляет собой значение ASCII 0. Так как C++ использует значение 0, чтобы представить ложь, ваши программы могут записать предыдущий цикл следующим образом:

while (*string)

В данном случае пока символ, определяемый указателем строки, не равен 0 (NULL), условие оценивается как истинное и цикл будет продолжаться. Из урока 5 вы узнали, что постфиксная операция увеличения C++ позволяет вам использовать значение переменной, а затем увеличивает это значение. Многие программы на C++ используют постфиксные операции увеличения и уменьшения, чтобы сканировать массивы с помощью указателей. Например, использование постфиксной операции увеличения делает следующие циклы while идентичными:

while (*string)

{
cout << *string++;
}

while (*string)
{
cout << *string;
string++;
}

Оператор cout << *string++, заставляет C++ вывести символ, указываемый указателем string, а затем увеличить текущее значение string, чтобы он указывал на следующий символ. С помощью этих методов следующая программа SMARTPTR.CPP иллюстрирует новую реализацию функций show_string и string_length:

#include <iostream.h>

void show_string(char *string)

{
while (*string) cout << *string++;
}

int string_length(char •string)

(
int length = 0;
while (*string++) length++;
return(length) ;
}

void main(void)

{
char title[] = "Учимся программировать на языке C++";
show_string(title) ;
сout << " содержит " << string_length(title) << " символов";
}

Если вы встретите функции C++, которые манипулируют строками с помощью указателей, то они с большой долей вероятности будут использовать подобную краткую запись.

Сканирование символьной строки

Одно из наиболее широко употребляемых использовании указателей в программах на C++ заключается в сканировании символьных строк. Для уменьшения количества кода многие программы используют следующие операторы для сканирования строки:

while (*string)

{
// операторы
string++;
// продвинуть к следующему символу
}

Следующая функция string_uppercase использует указатели для преобразования символов строки в символы верхнего регистра:

char *string_uppercase(char* string)

{
char *starting_address = string; // адрес string[0];
while (*string)

{
if ((*string >= 'а') && (*string <= 'я')) *string = *string - 'a' + 'A';
string++;
}
return(starting_address);
}

Эта функция сохраняет и возвращает начальный адрес строки, ко торый позволяет вашим программам использовать функцию следующим образом:

cout << Btring_uppercase("Привет, мир!") << endl;

* Поскольку при переводе книги обрабатываемые символы заменены с английских на русские, то этот алгоритм работает не для всех кодировок кирилицы в DOS и Windows. — Прим. перев.
 
Форум » Test category » C++ programmirovaniye » Уменьшение количества операторов (Уменьшение количества операторов)
  • Страница 1 из 1
  • 1
Поиск:


Яндекс.Метрика

Рекламная сеть