스에 trim하는 함수가 없어서 만들어 봤습니다.
첨부파일
2006.06.08 - 대소문자 변환 함수 추가
2007.3.9 - string 클래스는 비가상 소멸자를 가지므로 이것을 상속해서 사용할때 위험이 따르게 된다.
그래서 클래스로 상속을 받는대신 네임스페이스로 묶음
그래서 클래스로 상속을 받는대신 네임스페이스로 묶음
첨부파일
1 #ifndef __ISSTRING_H__ 2 #define __ISSTRING_H__ 3 4 #include <string> 5 #include <algorithm> 6 using namespace std; 7 8 namespace IsString 9 { 10 11 void TrimLeft(string& str , const char* ch) 12 { 13 if(str.empty()) return; 14 const std::string::size_type begin = str.find_first_not_of(ch); 15 const std::string::size_type size = str.size(); 16 17 if(std::string::npos == begin) 18 { 19 str.assign(""); 20 } 21 else if( begin != 0) 22 { 23 str.assign(str.substr(begin, size)); 24 } 25 } 26 27 void TrimRight(string& str , const char* ch) 28 { 29 if(str.empty()) return; 30 31 const std::string::size_type end = str.find_last_not_of(ch) + 1; 32 const std::string::size_type size = str.size(); 33 34 if(0 == end) 35 { 36 str.assign(""); 37 } 38 else if(end != size) 39 { 40 str.assign(str.substr(0 , end)); 41 } 42 } 43 44 void TrimWhiteSpace(string& str) 45 { 46 while((' ' == (str)[0]) || ('\t' == (str)[0])) 47 { 48 TrimLeft(str , " "); 49 TrimRight(str , "\t"); 50 } 51 52 while((' ' == (str)[str.length() - 1]) || ('\t' == (str)[str.length() - 1])) 53 { 54 TrimLeft(str , " "); 55 TrimRight(str , "\t"); 56 } 57 } 58 59 void ReplaceOf(string& str , const string target, const string replacement) 60 { 61 string::size_type pos = 0, found; 62 63 if (!target.empty()) 64 { 65 string::size_type target_size = target.size(); 66 string::size_type replacement_size = replacement.size(); 67 while ((found = str.find (target, pos)) != string::npos) 68 { 69 str.replace (found , target_size , replacement); 70 pos = found + replacement_size; 71 } 72 } 73 } 74 75 void ToUpper(string& str) 76 { 77 transform(str.begin() , str.end() , str.begin() , ::toupper); 78 } 79 80 void ToLower(string& str) 81 { 82 transform(str.begin() , str.end() , str.begin() , ::tolower); 83 } 84 }; 85 86 #endif
모갹이 2007/02/11 09:02 답글 | 수정 | 삭제
답글삭제음.. 어쩌다 들어오게 됐는데요.. string 은 상속을 하면 안됩니다..
모갹이 2007/03/27 20:20 답글 | 수정 | 삭제
흐흐.. 다시 들어왔습니다.. 전 네임스페이스 대신 class 로 묶인뒤에 맴버 함수들을 static 으로 선언하여 사용하고 있습니다~ 전 네임스페이스가 아직은 잘 적응이 안되더라구요...