Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;Boost::filesystem::带有unicode字符的路径 我是C++新手,需要点帮助。我有三个文件夹,一个是英文的,一个是日文的,还有一个是俄文的,用于考试。当我运行这个小程序时 #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; }_C++_Boost_Boost Filesystem - Fatal编程技术网

C++;Boost::filesystem::带有unicode字符的路径 我是C++新手,需要点帮助。我有三个文件夹,一个是英文的,一个是日文的,还有一个是俄文的,用于考试。当我运行这个小程序时 #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; }

C++;Boost::filesystem::带有unicode字符的路径 我是C++新手,需要点帮助。我有三个文件夹,一个是英文的,一个是日文的,还有一个是俄文的,用于考试。当我运行这个小程序时 #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; },c++,boost,boost-filesystem,C++,Boost,Boost Filesystem,这似乎不是唯一的cout问题,因为当我尝试使用向量项执行任何操作(例如使用winapi在资源管理器中打开这些文件夹)时,程序代码只能识别英文命名的文件夹 我在这个网站和谷歌上搜索过解决方案,但都没有成功。尝试使用wcout wstring wchar\t等没有任何效果 在windows 8上使用带有gcc和clion/cmake的mingw w64 4.0。 谢谢 不幸的是,将unicode输出到windows控制台并不容易。最可靠的方法是使用_cputws或WriteConsoleW,但这些函

这似乎不是唯一的cout问题,因为当我尝试使用向量项执行任何操作(例如使用winapi在资源管理器中打开这些文件夹)时,程序代码只能识别英文命名的文件夹

我在这个网站和谷歌上搜索过解决方案,但都没有成功。尝试使用wcout wstring wchar\t等没有任何效果

在windows 8上使用带有gcc和clion/cmake的mingw w64 4.0。
谢谢

不幸的是,将unicode输出到windows控制台并不容易。最可靠的方法是使用_cputws或WriteConsoleW,但这些函数直接写入控制台,而流重定向无法使用它们。该计划:

#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()) ) {
                _cputws(itr->path().wstring().c_str());
                _cputws(L"\n");
                dir.push_back(itr->path());
                cout << dir.size() << endl;
            }
        }
    }
}

int main() {
    vector<path> dirs;

    iterateDirs(".", dirs);
    for (path p : dirs) {
        _cputws(p.wstring().c_str());
        _cputws(L"\n");
    }
    return 0;
}
和cmd中的下一个输出

因此,在运行应用程序之前,您需要确保可以看到目录名,例如使用
dir

#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()) ) {
                _cputws(itr->path().wstring().c_str());
                _cputws(L"\n");
                dir.push_back(itr->path());
                cout << dir.size() << endl;
            }
        }
    }
}

int main() {
    vector<path> dirs;

    iterateDirs(".", dirs);
    for (path p : dirs) {
        _cputws(p.wstring().c_str());
        _cputws(L"\n");
    }
    return 0;
}
C:\w\1>test
.\CMakeFiles
1
.\??????????????
2
.\CMakeFiles
.\??????????????
C:\w\1>test
.\CMakeFiles
1
.\اختبارテスト試験Про
2
.\CMakeFiles
.\اختبارテスト試験Про