24 Strings library [strings]

24.2 Character traits [char.traits]

24.2.1 Character traits requirements [char.traits.require]

В таблице 54, X обозначает класс черты , определяющий типы и функции для символьного типа контейнера CharT; c и d обозначают значения типа CharT; p и q обозначают значения типа const CharT*; s обозначает значение типа CharT*; n, i и j обозначают значения типа size_­t; e и f обозначают значения типа X​::​int_­type; pos обозначает значение типа X​::​pos_­type; state обозначает значение типа X​::​state_­type; и r обозначает lvalue типа CharT. Операции с Чертами не должны вызывать исключений.

Таблица 54 - Требования к характеристикам персонажей
ВыражениеТип возвратаУтверждение / примечаниеСложность
до / после состояния
X​::​char_­type charT (описано в [char.traits.typedefs]) время компиляции
X​::​int_­type (описано в [char.traits.typedefs]) время компиляции
X​::​off_­type (описано в [char.traits.typedefs]) время компиляции
X​::​pos_­type (описано в [char.traits.typedefs]) время компиляции
X​::​state_­type (описано в [char.traits.typedefs]) время компиляции
X​::​eq(c,d) bool Returns: следует ли c рассматривать как равное d. постоянный
X​::​lt(c,d) bool Returns: следует ли c рассматривать как меньшее, чем d. постоянный
X​::​compare(p,q,n) int Returns: 0 если для каждого i в [0,n), X​::​eq(p[i],q[i]) есть true; иначе, отрицательное значение , если для некоторых j ин [0,n), X​::​lt(p[j],q[j]) это true и для каждого i дюйма [0,j) X​::​eq(p[i],q[i]) является true; иначе положительное значение. линейный
X​::​length(p) size_­t Returns: самый маленький i такой что X​::​eq(p[i],charT()) есть true. линейный
X​::​find(p,n,c) const X​::​char_­type* Returns: наименьшее q в [p,p+n) таком, то X​::​eq(*q,c) есть true, в противном случае ноль. линейный
X​::​move(s,p,n) X​::​char_­type* для каждого i в [0,n), выполняет X​::​assign(s[i],p[i]). Копирует правильно даже там, где диапазоны [p,p+n) и [s,s+n) перекрываются.
Returns: s.
линейный
X​::​copy(s,p,n) X​::​char_­type* Requires: p не в [s,s+n). Returns: s.
для каждого i в [0,n), выполняет X​::​assign(s[i],p[i]).
линейный
X​::​assign(r,d) (не используется) назначает r=d. постоянный
X​::​assign(s,n,c) X​::​char_­type* для каждого i в [0,n), выполняет X​::​assign(s[i],c).
Returns: s.
линейный
X​::​not_­eof(e) int_­type Returns: e если X​::​eq_­int_­type(e,X​::​eof()) есть false, в противном случае такое значение f , которое X​::​eq_­int_­type(f,X​::​eof()) есть false. постоянный
X​::​to_­char_­type(e) X​::​char_­type Returns: если для некоторых c, X​::​eq_­int_­type(e,X​::​to_­int_­type(c)) это true, c; иначе какое-то неопределенное значение. постоянный
X​::​to_­int_­type(c) X​::​int_­type Returns: некоторая ценность e, ограниченная определениями to_­char_­type и eq_­int_­type. постоянный
X​::​eq_­int_­type(e,f) bool Returns: для всех c и d, X​::​eq(c,d) равно X​::​eq_­int_­type(X​::​to_­int_­type(c), X​::​to_­int_­type(d)); в противном случае выдает true if e и f обе копии X​::​eof(); в противном случае уступает, false если одно из e и f является копией, X​::​eof() а другое - нет; в противном случае значение не указано. постоянный
X​::​eof() X​::​int_­type Returns: такое значение e , которое X​::​eq_­int_­type(e,X​::​to_­int_­type(c)) есть false для всех значений c. постоянный

Шаблон класса

template<class charT> struct char_traits;

должны быть<string> указаны в заголовке как основа для явных специализаций.