我想使用Boost.Filesystem製作一個目錄(該目錄可以由用戶提供,因此它可能是一個嵌套目錄的路徑;全部,部分或全部目錄在那條路上可能存在開始)。當我運行程序時,會創建一個目錄,但這不是我所要求的;包含路徑的字符串似乎越來越受到損壞。我從來沒有得到相同的結果兩次,但目錄的名稱始終以冒號開頭。Boost.Filesystem create_directories mangles目錄名
小例子:
#include <iostream>
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;
int main(int argc, char* argv[]) {
fs::path path = "junk/morejunk";
if (!fs::create_directories(path)) {
std::cerr << "Failed to create directory " << path << ".\n";
}
return(0);
}
運行的是,我得到的目錄,例如:@K%C5?
,:%C0)%E0?
和:%C0%E9%93?
。
我有一些麻煩讓Boost正確鏈接,但上面的程序現在編譯和運行。如果有必要,一些信息:
- 我使用的是Mac(OSX 10.9.4)
- GCC和Boost都與MacPorts的(帶+ gcc49選項升壓)
安裝 - GCC 4.9版.2_1
- 升壓版本1.57.0_1
- 我的Makefile看起來像
CC = /opt/local/bin/g++
FLAGS = -I/opt/local/include -L/opt/local/lib -lboost_system-mt -lboost_filesystem-mt
driver : driver.cpp
$(CC) $(FLAGS) -o driver driver.cpp
任何建議表示歡迎;我已經使用了C++了很長一段時間,而且我對Boost不太熟悉。
我的文件是UTF8。我沒有搞亂DYLD_LIBRARY_PATH,因爲很多網站聲稱它不是一個好主意,我也不明白爲什麼。 它看起來像是不同的庫和編譯器通常的Mac OSX問題。當我停用Macports g ++並使用預安裝的g ++時,突然問題消失了。 – Brendan 2015-04-07 14:48:49
「盲目」不是一個好主意。但是它是進行非侵入式部署的關鍵機制(例如,部署到可能安裝有衝突版本庫的機器)。唯一/更好的方法是使用發行版的所有內容 - 但這通常只適用於非常大的產品/非常受歡迎的開源 – sehe 2015-04-07 14:51:53