CLX C++ Libraries - strip
Author: clown

CLX C++ Libraries
Home >> salgorithm>> strip

# Declarations

    String& strip(String& s, const std::locale& loc = std::locale());
    String strip_copy(const String& s, const std::locale& loc = std::locale());
    String& strip_if(String& s, PredicateFunc f);
    String strip_copy_if(const String& s, PredicateFunc f);

    String& lstrip(String& s, const std::locale& loc = std::locale());
    String lstrip_copy(const String& s, const std::locale& loc = std::locale());
    String& lstrip_if(String& s, PredicateFunc f);
    String lstrip_copy_if(const String& s, PredicateFunc f);

    String& rstrip(String& s, const std::locale& loc = std::locale());
    String rstrip_copy(const String& s, const std::locale& loc = std::locale());
    String& rstrip_if(String& s, PredicateFunc f);
    String rstrip_copy_if(const String& s, PredicateFunc f);

    String& chop(String& s);
    String chop_copy(const String& s);
    String& chop_if(String& s, PredicateFunc f);
    String chop_copy_if(const String& s, PredicateFunc f);

    String& chomp(String& s);
    String chomp_copy(const String& s);

# Overview

strip() は，文字列の前後に存在する空白文字を除去します．lstrip()，rstrip() はそれぞれ，文字列の先頭，末尾に存在する空白文字を除去します．chop() は末尾の文字を1文字除去し，chomp() は末尾の改行文字を除去します．

strip_copy()，lstrip_copy()，rstrip_copy()，chop_copy()，chomp_copy() は，引数として指定された文字列を直接変更せず，コピーした文字列を変更します． また，strip_if()，lstrip_if()，rstrip_if() は，それぞれ文字列の前後，先頭， 末尾に存在する文字に対して PredicateFunc で指定された Functor が真を返す時のみ， その文字を除去します．

尚，Declarations においては template < ... > の部分を省略していますが， 単語の先頭が大文字になっているものはテンプレート引数として渡される型です（ただし， String は std::basic_string<CharT, Traits>）．

# Example

example_strip.cpp

    #include <string>
    #include <iostream>
    #include "clx/salgorithm.h"

    int main(int argc, char* argv[]) {
        std::string s = "*****Hello, world!*****";

        std::cout << "original: " << s << std::endl;
        std::cout << "strip:    " << clx::strip_copy_if(s, clx::is_any_of("*"))
            << std::endl;
        std::cout << "lstrip:   " << clx::lstrip_copy_if(s, clx::is_any_of("*"))
            << std::endl;
        std::cout << "rstrip:   " << clx::rstrip_copy_if(s, clx::is_any_of("*"))
            << std::endl;
        std::cout << "chop:     " << clx::chop_copy_if(s, clx::is_any_of("*"))
            << std::endl;

        return 0;
    }

    Result
    original: *****Hello, world!*****
    strip:    Hello, world!
    lstrip:   Hello, world!*****
    rstrip:   *****Hello, world!
    chop:     *****Hello, world!****