如何访问 boost 文件系统路径 class 的字符串表示形式并删除引号
How to access the string representation of boost filesystem's path class, and remove the quotes
我想将目录中文件的路径保存为字符串。 tutorial 中的示例几乎完成了我想要的,除了它使用我想要删除的引号来完成。现在我知道我可以通过将 .string() 添加到路径来实现,但我只是不知道在这个例子中把它放在哪里。
希望有人能帮助我。
正如您所说,您需要在path
上使用.string()
方法来输出不带引号的内容。下面修改后的教程示例输出不带引号:
#include <iostream>
#include <iterator>
#include <algorithm>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;
int main(int argc, char* argv[])
{
if (argc < 2)
{
cout << "Usage: tut3 path\n";
return 1;
}
path p(argv[1]); // p reads clearer than argv[1] in the following code
try
{
if (exists(p)) // does p actually exist?
{
if (is_regular_file(p)) // is p a regular file?
cout << p.string() << " size is " << file_size(p) << '\n';
else if (is_directory(p)) // is p a directory?
{
cout << p.string() << " is a directory containing:\n";
for (directory_iterator it(p); it != directory_iterator(); ++it)
cout << it->path().string() << "\n";
}
else
cout << p.string() << " exists, but is neither a regular file nor a directory\n";
}
else
cout << p.string() << " does not exist\n";
}
catch (const filesystem_error& ex)
{
cout << ex.what() << '\n';
}
return 0;
}
我想将目录中文件的路径保存为字符串。 tutorial 中的示例几乎完成了我想要的,除了它使用我想要删除的引号来完成。现在我知道我可以通过将 .string() 添加到路径来实现,但我只是不知道在这个例子中把它放在哪里。
希望有人能帮助我。
正如您所说,您需要在path
上使用.string()
方法来输出不带引号的内容。下面修改后的教程示例输出不带引号:
#include <iostream>
#include <iterator>
#include <algorithm>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;
int main(int argc, char* argv[])
{
if (argc < 2)
{
cout << "Usage: tut3 path\n";
return 1;
}
path p(argv[1]); // p reads clearer than argv[1] in the following code
try
{
if (exists(p)) // does p actually exist?
{
if (is_regular_file(p)) // is p a regular file?
cout << p.string() << " size is " << file_size(p) << '\n';
else if (is_directory(p)) // is p a directory?
{
cout << p.string() << " is a directory containing:\n";
for (directory_iterator it(p); it != directory_iterator(); ++it)
cout << it->path().string() << "\n";
}
else
cout << p.string() << " exists, but is neither a regular file nor a directory\n";
}
else
cout << p.string() << " does not exist\n";
}
catch (const filesystem_error& ex)
{
cout << ex.what() << '\n';
}
return 0;
}