Как преобразовать std::wstring в const char*
Этот код, сохраняет пути всех файлов из директории в векторе, дальше есть функция которая должна принимать этот путь, но проблема в том что она принимает const char*, а в векторе сохраняется std::wstring
std::vector<std::wstring> fileList;
for (const fs::path& it : fs::directory_iterator("C:\\Users\\tpog\\Documents\\images")) {
if (fs::is_regular_file(it) && (it.extension() == ".png")) {
fileList.emplace_back(it.c_str());
}
}
Ответы (1 шт):
Для начала определись ты собираешься использовать кодировки wide или всё-же ansi? Если у тебя нету прям жесткой необходимости в мультиязычности отключи в компиляторе UNICODE, тебе это сэкономит кучу времени и нервов. И вопрос отвалится сам собой.
Ну или ознакомься вот с этим ответом на aнгл. StackOverflow там https://stackoverflow.com/a/23691253/7316806 по сути и поясняют как конвертировать и почему.
Ps: unsigned char *
имеет тот-же тип что и uint8_t *
.
Pss: Почитай почему звёздочка ставится перед значением именно unsigned char *data
с первого взгляда одинаково, но есть разница в понимании.