将boost :: filesystem :: path转换为char?

时间:2018-08-24 19:41:26

标签: c++ arrays input boost char

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

需要读取文件名并检查the然后操作中的下一个可用数字,我打算使用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++
};

1 个答案:

答案 0 :(得分:1)

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

const char* c = p.c_str();

https://www.boost.org/doc/libs/1_63_0/libs/filesystem/doc/reference.html#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';
}

从@Ivan的评论来看,char可能不是所有系统中的基础表示形式。出于这个原因,一个migth需要使用路径的值类型(例如const boost::filesystem::path::value_type* c = p.c_str();)并修改其余代码,例如,使用通用的std::copy