-----Message d'origine----- bounces@lists.boost.org] De la part de Steven Watanabe Envoyé : vendredi 1 février 2008 21:16
int main(int /*argc*/, char* /*argv[]*/) { const fs::path p("c:/temp/test.txt") ; const fs::wpath wp(L"c:/temp/test.txt") ; { fs::remove(p) ; fs::ofstream ofile(p) ; assert(!ofile.fail()) ; } { fs::remove(p) ; fs::ofstream ofile(wp) ; assert(!ofile.fail()) ; }
{ fs::remove(p) ; fs::ofstream ofile(p, std::ios_base::binary) ; assert(!ofile.fail()) ; } { fs::remove(p) ; fs::ofstream ofile(wp, std::ios_base::binary) ; assert(!ofile.fail()) ; // <-- Assert triggered here } }
Running conditions: Boost 1.34.1 VisuIal C++ 7.1 Windows XP
Does it work with std::ofstream using back-slashes and raw C strings?
[Marc Viala] I've replaced slashes by black-slashes in fs::path (p and wp) to confirm the same behaviour: I've got an assert at the same code line. My feeling is that the default opening mode "std::ios_base::out" in conjunction with fs::ofstream is overwritten; for example, if someone replace the last "ofile" declaration with that one: fs::ofstream ofile(wp, std::ios_base::binary| std::ios_base::out) every thing work fine!! Best regards, Marc VIALA