boost::filesystem добавляет кавычки?

При использовании boost_filesystem Boost продолжает добавлять кавычки к именам файлов.

foo.cpp:

#include <iostream>
#include <boost/filesystem.hpp>

int main( int argc, char * argv[] )
{
    std::cout << argv[0] << std::endl;
    boost::filesystem::path p( argv[0] );
    std::cout << p << std::endl;
    std::cout << p.filename() << std::endl;
    return 0;
}

Скомпилировано:

g++ foo.cpp -o foo -lboost_filesystem -lboost_system

Выход:

./foo
"./foo"
"foo"

Это несколько неожиданно и неудобно в моем случае. Это действительно преднамеренно, или моя более старая версия Boost (1.46.1) глючит в этом отношении? Есть ли способ избежать их добавления?

Я просмотрел документацию, но кроме руководств, не показывающих эти кавычки в своих примерах вывода, я не был просвещен.


person DevSolar    schedule 15.03.2013    source источник


Ответы (2)


На самом деле это ошибка, зарегистрированная в платформе Boost версии 1.47.0.

Предлагаемый обходной путь:

std::cout << path("/foo/bar.txt").filename().string()
person fredrik    schedule 15.03.2013

Это сделано намеренно, потому что неожиданные встроенные пробелы и запутанный связанный код. Лучшее, что вы можете сделать, вероятно:

boost::replace_all(yourquotedstring, "\"", "");

ИЗМЕНИТЬ

Хотя, согласно этой ссылке, вы можете попробовать что-то вроде:

std::cout << path("/foo/bar.txt").filename().string(); 
person Roger Rowland    schedule 15.03.2013
comment
Ну, если я боюсь встроенных пробелов, то могу и сам добавить кавычки. Однако необходимость удалить их, прежде чем я смогу использовать имя файла в выводе журнала, является неприятностью, и replace_all() на самом деле не помогает, потому что, как бы глупо это ни было, может быть встроенный кавычки в имени файла. ;-) - person DevSolar; 15.03.2013
comment
Хорошо, но вы можете сделать то, что предлагается в отчете об ошибке: std::cout ‹‹ p.filename().string() ‹‹ std::endl; - person Roger Rowland; 15.03.2013
comment
Сделано, протестировано и зафиксировано еще до того, как я проголосовал/ответил здесь. ;-) - person DevSolar; 15.03.2013