Strip all trailing 0s in AsciiValue::write

v0.27.3
Andreas Huggel 22 years ago
parent f6c0f9371a
commit c1ff9cd64c

@ -20,14 +20,14 @@
*/ */
/* /*
File: value.cpp File: value.cpp
Version: $Name: $ $Revision: 1.2 $ Version: $Name: $ $Revision: 1.3 $
Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net> Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net>
History: 26-Jan-04, ahu: created History: 26-Jan-04, ahu: created
11-Feb-04, ahu: isolated as a component 11-Feb-04, ahu: isolated as a component
*/ */
// ***************************************************************************** // *****************************************************************************
#include "rcsid.hpp" #include "rcsid.hpp"
EXIV2_RCSID("@(#) $Name: $ $Revision: 1.2 $ $RCSfile: value.cpp,v $") EXIV2_RCSID("@(#) $Name: $ $Revision: 1.3 $ $RCSfile: value.cpp,v $")
// ***************************************************************************** // *****************************************************************************
// included header files // included header files
@ -187,14 +187,9 @@ namespace Exif {
std::ostream& AsciiValue::write(std::ostream& os) const std::ostream& AsciiValue::write(std::ostream& os) const
{ {
// Strip trailing '\0', if any // Strip all trailing '\0's (if any)
if (value_.size() > 0 && value_[value_.size() - 1] == '\0') { std::string::size_type pos = value_.find_last_not_of('\0');
os << value_.substr(0, value_.size() - 1); return os << value_.substr(0, pos + 1);
}
else {
os << value_;
}
return os;
} }
} // namespace Exif } // namespace Exif

@ -21,7 +21,7 @@
/*! /*!
@file value.hpp @file value.hpp
@brief Value interface and concrete subclasses @brief Value interface and concrete subclasses
@version $Name: $ $Revision: 1.4 $ @version $Name: $ $Revision: 1.5 $
@author Andreas Huggel (ahu) @author Andreas Huggel (ahu)
<a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a>
@date 09-Jan-04, ahu: created @date 09-Jan-04, ahu: created
@ -268,9 +268,9 @@ namespace Exif {
virtual long size() const; virtual long size() const;
virtual Value* clone() const; virtual Value* clone() const;
/*! /*!
@brief Write the value to an output stream. One trailing '\\0' @brief Write the value to an output stream. Any trailing '\\0'
character of the ASCII value is stripped if present and not characters of the ASCII value are stripped and not written to
written to the output stream. the output stream.
*/ */
virtual std::ostream& write(std::ostream& os) const; virtual std::ostream& write(std::ostream& os) const;
virtual long toLong(long n =0) const { return value_[n]; } virtual long toLong(long n =0) const { return value_[n]; }

Loading…
Cancel
Save