Add wxMBConv parameter to wxString::ToStdString

See #17461.
This commit is contained in:
ARATA Mizuki 2016-03-25 16:22:52 +09:00
parent 81e6638585
commit 70ddab243e
2 changed files with 16 additions and 8 deletions

View File

@ -1241,12 +1241,17 @@ public:
// wxStringImpl is std::string in the encoding we want
#define wxStringToStdStringRetType const std::string&
const std::string& ToStdString() const { return m_impl; }
std::string ToStdString(const wxMBConv& conv) const
{
wxScopedCharBuffer buf(mb_str(conv));
return std::string(buf.data(), buf.length());
}
#else
// wxStringImpl is either not std::string or needs conversion
#define wxStringToStdStringRetType std::string
std::string ToStdString() const
std::string ToStdString(const wxMBConv& conv = wxConvLibc) const
{
wxScopedCharBuffer buf(mb_str());
wxScopedCharBuffer buf(mb_str(conv));
return std::string(buf.data(), buf.length());
}
#endif

View File

@ -85,8 +85,8 @@
- String in UTF-8 encoding using wxString::utf8_str().
- String in any given encoding using mb_str() with the appropriate
wxMBConv object. This is also a potentially destructive operation.
- Standard @c std::string using wxString::ToStdString(). The contents
of the returned string use the current locale encoding, so this
- Standard @c std::string using wxString::ToStdString(). The encoding
of the returned string is specified with a wxMBConv object, so this
conversion is potentially destructive as well.
- Wide C string using wxString::wc_str().
- Standard @c std::wstring using wxString::ToStdWstring().
@ -756,10 +756,10 @@ public:
const wxCharBuffer ToAscii(char replaceWith = '_') const;
/**
Return the string as an std::string in current locale encoding.
Return the string as an std::string using @e conv's wxMBConv::cWC2MB method.
Note that if the conversion of (Unicode) string contents to the current
locale fails, the return string will be empty. Be sure to check for
Note that if the conversion of (Unicode) string contents using @e conv
fails, the return string will be empty. Be sure to check for
this to avoid silent data loss.
Instead of using this function it's also possible to write
@ -771,9 +771,12 @@ public:
@endcode
but using ToStdString() may make the code more clear.
@param conv
The converter to be used. This parameter is new in wxWidgets 3.1.1.
@since 2.9.1
*/
std::string ToStdString() const;
std::string ToStdString(const wxMBConv& conv = wxConvLibc) const;
/**
Return the string as an std::wstring.