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!****