1
我是C++新手,需要一點幫助。我有三個文件夾 - 一個用英文,一個用日文,一個用俄語出於測試目的。當我跑這個小程序C++ Boost :: filesystem ::具有unicode字符的路徑
#include <windows.h>
#include <string>
#include <iostream>
#include <boost/filesystem.hpp>
#include <boost/locale.hpp>
using namespace boost::filesystem;
using namespace std;
void iterateDirs(const path &dir_path, vector<path> &dir)
{
if (exists(dir_path))
{
directory_iterator end_itr;
for (directory_iterator itr(dir_path); itr != end_itr; ++itr) {
if (is_directory(itr->status())) {
cout << *itr << endl;
dir.push_back(itr->path());
cout << dir.size() << endl;
}
}
}
}
int main() {
vector<path> dirs;
iterateDirs("D:/Test", dirs);
for (path p : dirs) {
cout << p << endl;
}
return 0;
}
只有英文字母被識別。 這是輸出的外觀
D:/Test\lol"
1
"D:/Test\ыюы"
2
"D:/Test\???"
3
"D:/Test\lol"
"D:/Test\ыюы"
"D:/Test\???"
Process finished with exit code 0
它似乎只喜歡COUT的問題,因爲當我試圖做任何事情(像打開資源管理器使用WINAPI這些文件夾)與載體的項目,只有英文名稱的文件夾是由程序代碼識別。
我已經搜索了這個網站和谷歌的解決方案,他們都沒有工作。嘗試使用wcout wstring wchar_t等沒有用。
使用mingw w64 4.0與gcc和clion/cmake在Windows 8上。 謝謝!