OpenRTM  1.0.0
stringutil.h
[詳解]
1 // -*- C++ -*-
20 #ifndef COIL_STRINGUTIL_H
21 #define COIL_STRINGUTIL_H
22 
23 #include <string>
24 #include <vector>
25 #include <sstream>
26 
27 // Cygwin's gcc does not provide wstring type
28 #if defined(Cygwin) && ( __GNUC__ < 4 )
29 namespace std
30 {
31  typedef basic_string<wchar_t> wstring;
32 }
33 #endif
34 
35 namespace coil
36 {
37  typedef std::vector<std::string> vstring;
38 
58  std::wstring string2wstring(std::string str);
59 
79  std::string wstring2string(std::wstring wstr);
80 
98  void toUpper(std::string& str);
99 
117  void toLower(std::string& str);
118 
145  int getlinePortable(std::istream& istr, std::string& line);
146 
170  bool isEscaped(const std::string& str, std::string::size_type pos);
171 
204  std::string escape(const std::string str);
205 
242  std::string unescape(const std::string str);
243 
263  void eraseBlank(std::string& str);
264 
284  void eraseHeadBlank(std::string& str);
285 
306  void eraseTailBlank(std::string& str);
307 
328  void eraseBothEndsBlank(std::string& str);
329 
351  std::string normalize(std::string& str);
352 
374  unsigned int replaceString(std::string& str, const std::string from,
375  const std::string to);
376 
400  vstring split(const std::string& input,
401  const std::string& delimiter,
402  bool ignore_empty = false);
403 
432  bool toBool(std::string str, std::string yes, std::string no,
433  bool default_value = true);
457  bool includes(const vstring& list, std::string value,
458  bool ignore_case = true);
459 
483  bool includes(const std::string& list, std::string value,
484  bool ignore_case = true);
485 
515  bool isAbsolutePath(const std::string& str);
516 
542  bool isURL(const std::string& str);
543 
565  template <class Printable>
566  std::string otos(Printable n)
567  {
568  std::stringstream str_stream;
569  str_stream << n;
570  return str_stream.str();
571  };
572 
596  template <typename To>
597  bool stringTo(To& val, const char* str)
598  {
599  if (str == 0) { return false; }
600 
601  std::stringstream s;
602  if ((s << str).fail()) { return false; }
603  if ((s >> val).fail()) { return false; }
604  return true;
605  }
606 
630  template<>
631  bool stringTo<std::string>(std::string& val, const char* str);
632 
656 
681  std::string flatten(vstring sv);
682 
706  char** toArgv(const vstring& args);
707 
708 
730  std::string sprintf(char const * __restrict fmt, ...);
731 
732 }; // namepsace coil
733 #endif // COIL_STRINGUTIL_H
std::string normalize(std::string &str)
文字列を正規化する
void toUpper(std::string &str)
大文字への変換
std::string otos(Printable n)
与えられたオブジェクトをstd::stringに変換
Definition: stringutil.h:566
bool stringTo(To &val, const char *str)
与えられたstd::stringをオブジェクトに変換
Definition: stringutil.h:597
void eraseBlank(std::string &str)
文字列の空白文字を削除する
void eraseHeadBlank(std::string &str)
文字列の先頭の空白文字を削除する
bool includes(const vstring &list, std::string value, bool ignore_case=true)
文字列リスト中にある文字列が含まれるかどうかを判断する ...
vstring unique_sv(vstring sv)
与えられた文字列リストから重複を削除
void eraseBothEndsBlank(std::string &str)
文字列の先頭・末尾の空白文字を削除する
bool isAbsolutePath(const std::string &str)
与えられた文字列が絶対パスかどうかを判断する
std::vector< std::string > vstring
Definition: stringutil.h:37
char ** toArgv(const vstring &args)
与えられた文字列リストを引数リストに変換
void eraseTailBlank(std::string &str)
文字列の末尾の空白文字を削除する
std::string flatten(vstring sv)
与えられた文字列リストからCSVを生成
bool toBool(std::string str, std::string yes, std::string no, bool default_value=true)
与えられた文字列をbool値に変換する
bool isURL(const std::string &str)
与えられた文字列がURLかどうかを判断する
unsigned int replaceString(std::string &str, const std::string from, const std::string to)
文字列を置き換える
void toLower(std::string &str)
小文字への変換
std::string wstring2string(std::wstring wstr)
wstring から string への変換
int getlinePortable(std::istream &istr, std::string &line)
入力ストリームから1行読み込む
std::string sprintf(char const *__restrict fmt,...)
指定された書式に変換
std::wstring string2wstring(std::string str)
string から wstring への変換
bool isEscaped(const std::string &str, std::string::size_type pos)
文字列がエスケープされているか判断する
std::string unescape(const std::string str)
文字列のエスケープを戻す
std::string escape(const std::string str)
文字列をエスケープする
vstring split(const std::string &input, const std::string &delimiter, bool ignore_empty=false)
文字列を分割文字で分割する