Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef FORMATABLESTRING_H
00022 #define FORMATABLESTRING_H
00023
00024 #include <string>
00025 #include <sstream>
00026
00027 namespace Aseba
00028 {
00031
00038 template<typename charT>
00039 class BasicFormatableString : public std::basic_string<charT>
00040 {
00041 typedef std::basic_string<charT> S;
00042
00043 private:
00047 int argLevel;
00048
00052 void proceedReplace(const S &replacement);
00053
00054 public:
00055
00056 BasicFormatableString() : S(), argLevel(0) { }
00063 BasicFormatableString(const S &s) : S(s), argLevel(0) { }
00064
00073 BasicFormatableString &arg(int value, int fieldWidth = 0, int base = 10, charT fillChar = ' ');
00074
00083 BasicFormatableString &arg(unsigned value, int fieldWidth = 0, int base = 10, charT fillChar = ' ');
00084
00093 BasicFormatableString &arg(float value, int fieldWidth = 0, int precision = 6, charT fillChar = ' ');
00094
00100 template <typename T> BasicFormatableString &arg(const T& value)
00101 {
00102
00103 std::basic_ostringstream<charT> oss;
00104 oss << value;
00105
00106 proceedReplace(oss.str());
00107
00108
00109 return *this;
00110 }
00111
00117 BasicFormatableString& operator=(const S& str) ;
00118 };
00119
00120 typedef BasicFormatableString<char> FormatableString;
00121 typedef BasicFormatableString<wchar_t> WFormatableString;
00122
00124 }
00125
00126 #endif // FORMATABLESTRING_H //