В Windows path::value_type
- это wchar_t
, поэтому path::string_type
эквивалентно std::wstring
, а метод path::c_str()
возвращает wchar_t*
. Вы не можете назначить wchar_t*
для std::string
, вот что пытается сообщить вам ошибка компилятора.
Чтобы назначить объект path
для std::string
, необходимо выполнить преобразование символов из wchar_t
в char
. Метод path::string()
делает это для вас, например:
std::string s = i->string();
В противном случае используйте взамен std::wstring
, который можно назначить с помощью метода path::native()
или path::wstring()
, например:
std::wstring s = i->native();
std::wstring s = i->wstring();