From: Vadim Zeitlin Date: Wed, 30 Dec 2009 13:38:06 +0000 (+0000) Subject: Explicitly mention MSVC std::fstream(wxString) incompatibility issue. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ede4fb2ffac5f6aa510cac0430a457a13d6f6ff3 Explicitly mention MSVC std::fstream(wxString) incompatibility issue. The fact that std::fstream provides a non-standard constructor in MSVC CRT implementation is sufficiently confusing to merit a special mention. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63016 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/doxygen/overviews/changes_since28.h b/docs/doxygen/overviews/changes_since28.h index f7dc4dffb2..a84431a08f 100644 --- a/docs/doxygen/overviews/changes_since28.h +++ b/docs/doxygen/overviews/changes_since28.h @@ -61,6 +61,24 @@ to use, e.g.: OpenLogFile(s.mb_str()); // OK: always calls narrow string overload OpenLogFile(s.wc_str()); // OK: always calls wide string overload @endcode +A common example of such problem arises with @c std::fstream class constructor +in Microsoft Visual C++ standard library implementation. In addition to a +constructor from @c const @c char * which this class must have, it also +provides a constructor taking a wide character file name. Because of this, code +like the following +@code + #include + + void MyFunc(const wxString& filename) + { + std::ifstream ifs(filename.c_str()); + ... + } +@endcode +does not compile when using Microsoft Visual C++ and needs to be changed to use +mb_str() (which will not work for file names containing Unicode characters, +consider using wxWidgets classes and functions to work with such file names as +they are not supported by standard C++ library). The other class of incompatible changes is due to modifying some virtual methods to use @c wxString parameters instead of @c const @c wxChar* ones to