Marco Nie - filesystem 2019-02-21T14:03:00+08:00 Typecho https://blog.niekun.net/feed/atom/tag/filesystem/ <![CDATA[boost库里使用path的指针问题]]> https://blog.niekun.net/archives/95.html 2019-02-21T14:03:00+08:00 2019-02-21T14:03:00+08:00 admin https://niekun.net 近期在开发过程中遇到一个奇怪的问题,当我复制一个文件夹到新目录时候总是失败,查看日志发现是传递地址出错了。
我是使用的是Boost的filesystem C++库处理文件,下面是代码片段,将path类型的地址放入一个指针,然后调用其他function:

fs::path childDir = np;
childDir += "/\\" + dir_itr->path().filename().string();
const char* c_childDir = childDir.string().c_str();

我在本机实验是没有问题,但在他人电脑上提示directory error。
我将path里的地址先存放到一个string里然后在转换为char*,发现问题解决了。
我想可能的原因就是path不能直接使用其指针地址。下面是修改后的程序片段:

string s_childDir = newDir;
s_childDir += "/\\" + dir_itr->path().filename().string();
const char* c_childDir = s_childDir.c_str();

以上就是关于boost库里使用path的指针问题的解决方法。

]]>