При использовании 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) содержит ошибки? Есть ли способ избежать их добавления?
Я просмотрел документацию, но кроме учебников не показывая эти кавычки в их примере вывода, я не был просветленным.
Это на самом деле ошибка подано в Boost Framework версии 1.47.0.
Предлагаемый обходной путь:
std::cout << path("/foo/bar.txt").filename().string()
Это преднамеренно, потому что неожиданные встроенные пробелы и запутывают связанный код Лучшее, что вы можете сделать, это:
boost::replace_all(yourquotedstring, "\"", "");
РЕДАКТИРОВАТЬ
Хотя, согласно эта ссылка, Вы можете попробовать что-то вроде:
std::cout << path("/foo/bar.txt").filename().string();