text.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #pragma once
  2. #include <afxtempl.h>
  3. // extern CString ExplodeMin(CString str, CList<CString>& sl, TCHAR sep, int limit = 0);
  4. // extern CString Explode(CString str, CList<CString>& sl, TCHAR sep, int limit = 0);
  5. // extern CString Implode(CList<CString>& sl, TCHAR sep);
  6. template<class T, typename SEP>
  7. T Explode(T str, CList<T>& sl, SEP sep, int limit = 0)
  8. {
  9. sl.RemoveAll();
  10. for(int i = 0, j = 0; ; i = j+1)
  11. {
  12. j = str.Find(sep, i);
  13. if(j < 0 || sl.GetCount() == limit-1)
  14. {
  15. sl.AddTail(str.Mid(i).Trim());
  16. break;
  17. }
  18. else
  19. {
  20. sl.AddTail(str.Mid(i, j-i).Trim());
  21. }
  22. }
  23. return sl.GetHead();
  24. }
  25. template<class T, typename SEP>
  26. T ExplodeMin(T str, CList<T>& sl, SEP sep, int limit = 0)
  27. {
  28. Explode(str, sl, sep, limit);
  29. POSITION pos = sl.GetHeadPosition();
  30. while(pos) 
  31. {
  32. POSITION tmp = pos;
  33. if(sl.GetNext(pos).IsEmpty())
  34. sl.RemoveAt(tmp);
  35. }
  36. if(sl.IsEmpty()) sl.AddTail(T()); // eh
  37. return sl.GetHead();
  38. }
  39. template<class T, typename SEP>
  40. T Implode(CList<T>& sl, SEP sep)
  41. {
  42. T ret;
  43. POSITION pos = sl.GetHeadPosition();
  44. while(pos)
  45. {
  46. ret += sl.GetNext(pos);
  47. if(pos) ret += sep;
  48. }
  49. return(ret);
  50. }
  51. extern CString ExtractTag(CString tag, CMapStringToString& attribs, bool& fClosing);
  52. extern CStringA ConvertMBCS(CStringA str, DWORD SrcCharSet, DWORD DstCharSet);
  53. extern CStringA UrlEncode(CStringA str, bool fRaw = false);
  54. extern CStringA UrlDecode(CStringA str, bool fRaw = false);
  55. extern DWORD CharSetToCodePage(DWORD dwCharSet);
  56. extern CList<CString>& MakeLower(CList<CString>& sl);
  57. extern CList<CString>& MakeUpper(CList<CString>& sl);
  58. extern CList<CString>& RemoveStrings(CList<CString>& sl, int minlen, int maxlen);