преобразование boost :: filesystem :: path в char? - PullRequest
0 голосов
/ 24 августа 2018

Я разработал, как передать путь наддува необходимого формата, но у меня возникли некоторые проблемы, связанные с горячей передачей path.stem в массив символов, а затем запустили некоторую проверку имени файла и предприняли правильные действия.

необходимо прочитать имя файла и проверить следующее доступное число в действии and, я намеревался использовать цикл for, чтобы получить число в массив символов и затем сравнить с этим отдельным счетчиком

как я могу ввести 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 голосов
/ 24 августа 2018

С учетом bfs::path p, p.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';
}

Из комментария @ Ивана вполне вероятно, что char не является базовым представлением во всех системах.По этой причине одному мигу необходимо использовать тип значения path, как в const boost::filesystem::path::value_type* c = p.c_str();, и изменить оставшуюся часть кода, например, использовать универсальный std::copy.

...