00001
00002
00014 #include "string_convert.h"
00015
00016 #ifdef SSTREAM_DEFECT
00017 #include <strstream>
00018 using std::ostrstream;
00019 #else
00020 #include <sstream>
00021 using std::ostringstream;
00022 #endif
00023
00024 #include <algorithm>
00025 #include <cassert>
00026
00027 using std::string;
00028
00029 namespace hippodraw {
00030
00031 namespace String {
00032
00033 string convert ( int i )
00034 {
00035 #ifdef SSTREAM_DEFECT
00036 ostrstream strm_text;
00037 #else
00038 std::ostringstream strm_text;
00039 #endif
00040 strm_text << i;
00041 #ifdef SSTREAM_DEFECT
00042 strm_text << std::ends;
00043 #endif
00044
00045 return string ( strm_text.str() );
00046 }
00047
00048 string convert ( unsigned int i )
00049 {
00050 #ifdef SSTREAM_DEFECT
00051 ostrstream strm_text;
00052 #else
00053 std::ostringstream strm_text;
00054 #endif
00055 strm_text << i;
00056 #ifdef SSTREAM_DEFECT
00057 strm_text << std::ends;
00058 #endif
00059
00060 return string ( strm_text.str() );
00061 }
00062
00063 string convert ( double v )
00064 {
00065 #ifdef SSTREAM_DEFECT
00066 ostrstream strm_text;
00067 #else
00068 std::ostringstream strm_text;
00069 #endif
00070 strm_text << v;
00071 #ifdef SSTREAM_DEFECT
00072 strm_text << std::ends;
00073 #endif
00074
00075 return string ( strm_text.str() );
00076 }
00077
00078 bool ci_equal(char ch1, char ch2)
00079 {
00080 return toupper((unsigned char)ch1) == toupper((unsigned char)ch2);
00081 }
00082
00083 size_t ci_find(const string& str1, const string& str2)
00084 {
00085 string::const_iterator pos =
00086 std::search(str1. begin ( ), str1. end ( ), str2.
00087 begin ( ), str2. end ( ), ci_equal);
00088 if (pos == str1. end ( ))
00089 return string::npos;
00090 else
00091 return pos - str1. begin ( );
00092 }
00093
00094 }
00095 }