Apache StringUtils
имеет несколько методов: leftPad
, rightPad
, center
и repeat
.
, Но обратите внимание на то, что —, поскольку другие упомянули и продемонстрировали в [1 112] этот ответ — String.format()
и эти Formatter
, классы в JDK являются более оптимальными вариантами. Используйте их по коду свободного городского населения.
Я использовал самый последний черновик C ++ 0x, N2914 (в котором все еще есть формулировки концепций) в качестве ссылки для следующего ответа.
1) Концепции похожи на интерфейсы в этом. Если ваш тип поддерживает концепцию, он также должен поддерживать все «базовые» концепции. Утверждение Википедии, которое вы цитируете, имеет смысл с точки зрения клиента типа - если он знает, что T
удовлетворяет концепции Derived
, то он также знает, что он удовлетворяет концепции ] База
. С точки зрения автора шрифтов это, естественно, означает, что должны быть реализованы оба варианта. См. 14.10.3 / 2.
2) Да, концепция с членами typename
может быть auto
. Такие члены могут быть автоматически выведены, если они используются в определениях функциональных членов в той же концепции. Например, value_type
для итератора может быть выведен как тип возвращаемого значения его оператора *
. Однако, если член типа нигде не используется, он не будет выведен и, следовательно, не будет определен неявно. В вашем примере нет способа вывести SomeType
для Dummy
или Dummy1
, поскольку Type
isn ' t используется другими членами концепции, поэтому ни один из классов не будет отображаться в концепции (и, фактически, ни один класс не может автоматически сопоставить его). См. 14.10.1.2/11 и 14.10.2.2/4.
3) Аксиомы были слабым местом спецификации, и они постоянно обновлялись, чтобы придать некоторый (больший) смысл. Незадолго до того, как концепции были извлечены из черновика, была статья , которая немного изменилась - прочтите ее и посмотрите, имеет ли она больше смысла для вас, или у вас все еще есть вопросы по ней.
Для ваших конкретном примере (с учетом синтаксической разницы), это будет означать, что компилятору будет разрешено считать выражение (a * 1)
таким же, как (a * 2)
, для назначение правила «как если бы» языка (т.е. компилятору разрешено выполнять любые оптимизации, которые он хочет, пока результат ведет себя так, как будто их не было). Однако,