首页 > 解决方案 > 将 boost::filesystem::path 转换为字符?

问题描述

我已经弄清楚如何将 boost 路径传递给所需的格式,但是我在弄清楚将 path.stem 传递到 char 数组时遇到了一些问题,然后对文件名进行一些检查并采取正确的措施

需要读取文件名并检查然后操作中的下一个可用数字,我打算使用 for 循环将数字放入 char 数组中,然后与这个单独的计数器进行比较

我怎样才能将 path() 逐个字符输入到数组中 - 或者有更好的方法!

int count(boost::filesystem::path input) {

cout << "inputzz :  " << input << endl;


char data;
wstring winput;
for (int a = 0; a < 4;){

//boost::filesystem::absolute(input).string();

//cout << input.generic_string() << endl;



(input.generic_string()) >> data;


data << (boost::filesystem::path()input.generic_string());


//a++
};

标签: c++arraysinputboostchar

解决方案


海合会:

给定 a bfs::path pp.c_str()您可以访问以 null 结尾的char*数组。

const char* c = p.c_str();

完整示例:

#include<iostream>
#include<boost/filesystem/path.hpp>

int main(){
    boost::filesystem::path p("~/.bashrc");
    const char* c = p.c_str();
    std::cout << c << '\n';

    char c2[99];
    std::strcpy(c2, p.c_str());
    std::cout << c2 << '\n';
}

MSVC:

char不是所有系统的底层表示。Windows例如,它wchar_t是. 出于这个原因,可能需要使用路径的值类型,如const boost::filesystem::path::value_type* c = p.c_str();修改其余代码,例如使用通用的std::copy.

或者,可以在此处wchar_t *找到将 a 转换为 a的示例代码。char *


推荐阅读