Quando si utilizza boost_filesystem, Boost continua ad aggiungere virgolette ai nomi dei file.boost :: filesystem aggiungendo le virgolette?
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;
}
Compilato:
g++ foo.cpp -o foo -lboost_filesystem -lboost_system
uscita:
./foo
"./foo"
"foo"
Questo è un po 'inaspettato, e scomodo nel mio caso. E 'davvero intenzionale, o la mia versione un po' più vecchia di Boost (1.46.1) è bacata da questo punto di vista? C'è un modo per evitare che vengano aggiunti?
Ho letto la documentazione, ma a parte le esercitazioni non mostrando quelle virgolette nel loro output di esempio, non ero illuminato.
Beh, se ho paura di spazi incorporati posso anche aggiungere citazioni me stesso. Dovendo * rimuoverli * prima che io possa usare il nome del file in un output di log è comunque una seccatura - e 'replace_all()' non aiuta molto perché, come potrebbe essere, potrebbe esserci un segno di citazione incorporato * * anche nel nome del file. ;-) – DevSolar
Ok, ma si potrebbe fare ciò che suggerisce il bug report: std :: cout << p.filename(). String() << std :: endl; –
Fatto, testato e impegnato prima ancora di avere upvoted/risposto qui. ;-) – DevSolar