Ответ 1
Если N известно, вы можете использовать
path.erase(N, std::string::npos);
Если N неизвестно и вы хотите его найти, вы можете использовать любую из функций поиска. В этом случае вы хотите найти последнюю косую черту, чтобы вы могли использовать rfind
или find_last_of
:
path.erase(path.rfind('/'), std::string::npos);
path.erase(path.find_last_of('/'), std::string::npos);
Там даже вариация на основе итераторов:
path.erase (path.begin() + path.rfind('/'), path.end());
Тем не менее, если вы собираетесь манипулировать путями для жизни, лучше использовать библиотеку, предназначенную для этой задачи, такую как Boost Filesystem.