Ошибка преобразования std::tr2::sys::path в std::string?

Я использую библиотеку файловой системы Visual Studio 2013 TR2. Я вижу ошибку при преобразовании UNC-пути в строку:

#include "StdAfx.h"
#include <filesystem>
#include <iostream>

//------------------------------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
    namespace fs = std::tr2::sys;

    fs::path fsPath = "//server/dir";

    std::string sPath = fsPath;

    std::cout << sPath.c_str() << "\n";
}

Это выведет "\server\dir", а не "\\server\dir".

Есть ли исправление или обходной путь для этого? Я делаю что-то неправильно?

1 ответ

Решение

Ну, я нашел обходной путь, который работает для меня. Если я использую

sPath = fsPath.string();

Теперь я могу передать эту строку в конструктор std::ifstream. Строка пути будет "//server/dir", а не "\\server\dir".

Другие вопросы по тегам