У меня есть путь к файлу как
std::string
Например:
C:\\folder1\\folder2\\file.dll
Я хочу получить путь к папке
Например: C: \ папка1 \ папка2 \.
Я пытался
str=path.substr(0,path.find_last_of("\/"))
Но это также не учитывает последний \\.
Вместо того, чтобы обрабатывать пути и обрабатывать их самостоятельно, я рекомендую вам использовать либо std::filesystem::path (если ваш компилятор достаточно новый, чтобы иметь C++ 17, либо иначе Повышение файловой системы path). Это значительно упростит обработку пути так.





Если у вас есть доступ к ускорению, используйте:
boost::filesystem::path(str).root_path();
и с C++ 17:
std::filesystem::path(str).root_path();
Используйте std::filesystem::parent_path():
std::filesystem::path p{ "c:\\temp\\test.txt" };
std::cout << "Parent: " << p.parent_path() << std::endl; // will output c:\temp
Если вы используете VS 2017, filesystem доступен в пространстве имен experimental:
std::experimental::filesystem::path p{ "c:\\temp\\test.txt" };
_splitpath и _makepath для создания родительского пути.
поэтому добавьте 1 к результату find_last_of