diff --git a/src/OpenMesh/Core/IO/reader/BaseReader.hh b/src/OpenMesh/Core/IO/reader/BaseReader.hh index be9abc12..2720a5b7 100644 --- a/src/OpenMesh/Core/IO/reader/BaseReader.hh +++ b/src/OpenMesh/Core/IO/reader/BaseReader.hh @@ -132,6 +132,43 @@ protected: }; +/** \brief Trim left whitespace + * + * Removes whitespace at the beginning of the string + * + * @param _string input string + * @return trimmed string + */ +static inline std::string &left_trim(std::string &_string) { + _string.erase(_string.begin(), std::find_if(_string.begin(), _string.end(), std::not1(std::ptr_fun(std::isspace)))); + return _string; +} + +/** \brief Trim right whitespace + * + * Removes whitespace at the end of the string + * + * @param _string input string + * @return trimmed string + */ +static inline std::string &right_trim(std::string &_string) { + _string.erase(std::find_if(_string.rbegin(), _string.rend(), std::not1(std::ptr_fun(std::isspace))).base(), _string.end()); + return _string; +} + +/** \brief Trim whitespace + * + * Removes whitespace at the beginning and end of the string + * + * @param _string input string + * @return trimmed string + */ +static inline std::string &trim(std::string &_string) { + return left_trim(right_trim(_string)); +} + + + //============================================================================= } // namespace IO } // namespace OpenMesh diff --git a/src/OpenMesh/Core/IO/reader/PLYReader.cc b/src/OpenMesh/Core/IO/reader/PLYReader.cc index f7497069..d92c7cde 100644 --- a/src/OpenMesh/Core/IO/reader/PLYReader.cc +++ b/src/OpenMesh/Core/IO/reader/PLYReader.cc @@ -107,8 +107,7 @@ _PLYReader_::_PLYReader_() { bool _PLYReader_::read(const std::string& _filename, BaseImporter& _bi, Options& _opt) { - std::fstream in(_filename.c_str(), (options_.is_binary() ? std::ios_base::binary | std::ios_base::in - : std::ios_base::in)); + std::fstream in(_filename.c_str(), (std::ios_base::binary | std::ios_base::in) ); if (!in.is_open() || !in.good()) { omerr() << "[PLYReader] : cannot not open file " << _filename << std::endl; @@ -833,7 +832,6 @@ _PLYReader_::ValueType get_property_type(std::string _string1, std::string _stri //----------------------------------------------------------------------------- - bool _PLYReader_::can_u_read(std::istream& _is) const { // Clear per file options @@ -846,6 +844,7 @@ bool _PLYReader_::can_u_read(std::istream& _is) const { // read 1st line std::string line; std::getline(_is, line); + trim(line); //Check if this file is really a ply format if (line != "PLY" && line != "ply")