Boost logo

Boost :

From: Eoin O'Callaghan (eoinoc_at_[hidden])
Date: 2007-04-12 10:59:25

Hello, I posted this previously to the Boost-Users list, sorry for the
double post but in hindsight this list is probably much more appropriate.

My development platform is Win XP with sp2. I am using a very recent
(no older than a week) copy of the boost cvs version 1.34rc and the
compilers are MSVC 7.1 and 8.0 both with the service packs.

I've encountered some puzzling behaviour with filesystem::wpath's and
filesystem::ofstream's when opened in binary mode and compiled with
VC++ 7.1.

When I attempt to open a binary ofstream with a wpath as its filename
it will fail if the file did not already exist. This appears to be
contrary to when the filename argument is a narrow filesystem::path.

When the binary mode is not specified both files are created.

Attached is a very small app. demonstrating the inconsistency. This
only occurs with 7.1, when compiled with 8.0 both files will be
created if they did not already exist.

Kind regards, Eoin.


#include <iostream>

#include <boost/filesystem/path.hpp>
#include <boost/filesystem/fstream.hpp>

namespace fs = boost::filesystem;

int main()
    fs::wpath wide_filename = L"./Wide.txt";
    fs::path narrow_filename = "./Narrow.txt";
    fs::ofstream wide_fs(wide_filename, fs::fstream::binary);
    std::cout << ((wide_fs.is_open()) ?
                  "Wide file open." : "Wide file not open.")
              << std::endl;
    fs::ofstream narrow_fs(narrow_filename, fs::fstream::binary);
    std::cout << ((narrow_fs.is_open()) ?
                  "Narrow file open." : "Narrow file not open.")
              << std::endl;
    return 0;

Boost list run by bdawes at, gregod at, cpdaniel at, john at