StringUtils.cpp
上传用户:lijia5631
上传日期:2008-11-10
资源大小:1214k
文件大小:4k
源码类别:

视频捕捉/采集

开发平台:

MultiPlatform

  1. /**
  2.   * cubicles
  3.   *
  4.   * This is an implementation of the Viola-Jones object detection 
  5.   * method and some extensions.  The code is mostly platform-
  6.   * independent and uses only standard C and C++ libraries.  It
  7.   * can make use of MPI for parallel training and a few Windows
  8.   * MFC functions for classifier display.
  9.   *
  10.   * Mathias Kolsch, matz@cs.ucsb.edu
  11.   *
  12.   * $Id: StringUtils.cpp,v 1.7 2004/11/11 01:58:58 matz Exp $
  13. **/
  14. // StringUtils.cpp implements <string> convenience functions and
  15. // Unix/Windows path conversions.
  16. //
  17. ////////////////////////////////////////////////////////////////////
  18. //
  19. // By downloading, copying, installing or using the software you 
  20. // agree to this license.  If you do not agree to this license, 
  21. // do not download, install, copy or use the software.
  22. //
  23. // Copyright (C) 2004, Mathias Kolsch, all rights reserved.
  24. // Third party copyrights are property of their respective owners.
  25. //
  26. // Redistribution and use in binary form, with or without 
  27. // modification, is permitted for non-commercial purposes only.
  28. // Redistribution in source, with or without modification, is 
  29. // prohibited without prior written permission.
  30. // If granted in writing in another document, personal use and 
  31. // modification are permitted provided that the following two
  32. // conditions are met:
  33. //
  34. // 1.Any modification of source code must retain the above 
  35. //   copyright notice, this list of conditions and the following 
  36. //   disclaimer.
  37. //
  38. // 2.Redistribution's in binary form must reproduce the above 
  39. //   copyright notice, this list of conditions and the following 
  40. //   disclaimer in the documentation and/or other materials provided
  41. //   with the distribution.
  42. //
  43. // This software is provided by the copyright holders and 
  44. // contributors "as is" and any express or implied warranties, 
  45. // including, but not limited to, the implied warranties of 
  46. // merchantability and fitness for a particular purpose are 
  47. // disclaimed.  In no event shall the copyright holder or 
  48. // contributors be liable for any direct, indirect, incidental, 
  49. // special, exemplary, or consequential damages (including, but not 
  50. // limited to, procurement of substitute goods or services; loss of 
  51. // use, data, or profits; or business interruption) however caused
  52. // and on any theory of liability, whether in contract, strict 
  53. // liability, or tort (including negligence or otherwise) arising 
  54. // in any way out of the use of this software, even if advised of 
  55. // the possibility of such damage.
  56. //
  57. ////////////////////////////////////////////////////////////////////
  58. #include "cubicles.hpp"
  59. #include <string>
  60. #include <istream>
  61. using namespace std;
  62. /////////////////////////////////////////////////////////////////////////////
  63. // Helper functions
  64. /** read a line from the input stream. then make sure that trailing
  65.  * carriage-returns are removed from the string.
  66.  */
  67. void getline_crlf(istream& is, string& line)
  68. {
  69.   getline(is, line);
  70.   if (line[line.length()-1]=='r') {
  71.     line.erase(line.length()-1);
  72.   }
  73. }
  74. // substitute "what" with "with"
  75. void ReplaceAll(string& mangle, const string what, const string with)
  76. {
  77.   size_t pos = mangle.find(what);
  78.   while (pos!=string::npos) {
  79.     mangle.replace(pos, what.size(), with);
  80.     pos = mangle.find(what);
  81.   }
  82. }
  83. // removes all carriage returns from string; CR == r
  84. void RemoveCR(string& str)
  85. {
  86.  size_t pos = str.find('r');
  87.   while (pos!=string::npos) {
  88.     str.erase(pos);
  89.     pos = str.find('r');
  90.   }
  91. }
  92. #ifdef WIN32
  93. /* replace / with 
  94. */
  95. string ConvertPathToWindows(const string& filename)
  96. {
  97.   // substitute  for /
  98.   string win_filename(filename);
  99.   ReplaceAll(win_filename, "/", "\");
  100.   return win_filename;
  101. }
  102. /* replace  with /
  103. */
  104. string ConvertPathToStandard(const string& win_filename)
  105. {
  106.   // substitute / for  
  107.   string std_filename(win_filename);
  108.   ReplaceAll(std_filename, "\", "/");
  109.   return std_filename;
  110. }
  111. #endif // WIN32