Я пишу программу на C++ для школьного задания. В какой-то момент вопрос требует от меня изменить каталоги, которые я знаю, как это сделать. Тем не менее, пользователь предоставит программе абсолютный путь к файлу. Я пытаюсь изменить каталог, где находится этот файл. Например, если я нахожусь в директории dir2, и пользователь хочет перейти в файлC++ - Разделение абсолютного пути к файлу
/home/dir1/dir2/dir3/dir4/file
Я хотел бы сделать
int ret = chdir("home/dir1/dir2/dir3/dir4");
Мой вопрос, как я могу разделить USER- данная строка в
/home/dir1/dir2/dir3/dir4/
и
file
EDIT Я понял. Сначала я преобразовал абсолютный путь из const char * в строку. Затем я использовал член строки .find_last_of ("/"), чтобы найти позицию последнего «/» в строке. Затем я использовал член .substr(), чтобы получить подстроку от 0 до этой позиции, возвращаемой .find_last_of
Поместите свою резиновую утку - https://en.wikipedia.org/wiki/Rubber_duck_debugging - рядом с вашей клавиатурой и объясните свою резиновую утку на простом английском языке, ваш логический шаг за шагом, алгоритм, который делает это. Как только ваша резиновая утка соглашается с тем, что ваш алгоритм будет работать, просто возьмите свое объяснение и переведите его в код. –
Я не совсем уверен, какие параметры мне нужно разделить на строки таким образом. Я знаю, что я могу разбить его на основе пробелов, используя stringstreams. Но это другой разделитель.Я хотел бы разбить его в соответствии с последним '/' –
В классе std :: string есть методы для разбиения и измельчения строки любым способом, который вам нравится. Если вы хотите извлечь части строки до или после позиции #n, std :: string предлагает несколько методов для этого. –