Назад | Начало урока | Вперед
Содержание

Глава 3

Сравнение строк
Сравнение строк принципиально отличается от сравнения чисел. Числа обладают постоянными значениями, смысл которых всегда и везде одинаков. Но для сравнения двух строк требуются лексические сравнения. Иначе говоря, когда вы проверяете символ и определяете, "больше" или "меньше" он, чем другой, вы в действительности сравниваете числовые представления этих символов в выбранной кодироовке. Чаще всего используется кодировка ASCII, в которой печатные символы английского языка представляются десятичными числами в интервале от 32 до 127.

В кодировке ASCII список символов начинается с пробела, далее следуют некоторые знаки препинания, а затем буквы верхнего и нижнего регистра. Таким образом буквы в начале алфавита имеют меньшие ASCII-коды, чем буквы в конце алфавита.

В С++ предусмотрено несколько способов сравнения строк, каждый из которых обладает своими достоинствами и недостатками. Проще всего использовать перегруженные внешние (то есть не функции класса) операторные функции operator==, operator!=, operator>, operator<, operator>= и operator<=.

Вверх


//: C03:CompStr.h
#ifndef COMPSTR_H
#define COMPSTR_H
#include <string>
#include "../TestSuite/Test.h"
using std::string;

class CompStrTest : public TestSuite::Test {

public: void run() {
// Сравниваемые строки
string s1("This");
string s2("That");
test_(s1 == s1);
test_(s1 != s2);
test_(s1 > s2);
test_(s1 >= s2);
test_(s1 >= s1);
test_(s2 < s1);
test_(s2 <= s1);
test_(s1 <= s1);
}
}; #endif // COMPSTR_H ///:~


//: C03:CompStr.cpp
//{L} ../TestSuite/Test
#include "CompStr.h"

int main() {

CompStrTest t;
t.run();
return t.report();
} ///:~


Результат:

s1 == s1
s1 != s2
s1 > s2
s1 >= s2
s1 >= s1
s2 < s1
s2 <= s1
s1 <= s1

Анализ:


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz