Форум программистов, компьютерный форум CyberForum.ru

Выделить из строки с полным путем к файлу само имя файла без расширения - C++

Восстановить пароль Регистрация
 
Zhalair
1 / 1 / 0
Регистрация: 04.11.2011
Сообщений: 40
08.06.2012, 21:46     Выделить из строки с полным путем к файлу само имя файла без расширения #1
String58. Дана строка, содержащая полное имя файла, то есть имя диска, спи-сок каталогов (путь), собственно имя и расширение. Выделить из этой строки имя файла (без расширения).
Помогите пожалуйста я не понимаю эти задачи на строки...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2012, 21:46     Выделить из строки с полным путем к файлу само имя файла без расширения
Посмотрите здесь:

C++ Строки с Файлом(в стр без файла)
C++ Из полного пути к файлу выделить только имя файла
Добавление расширения файла C++
C++ Выделить из строки имя файла без расширения
C++ Приложение для доступа к БД программным путем без инструментов GUI
После использования операции присваивания ошибку выдает само удаление файла C++
Путь к файлу без костылей C++
C++ Изменение строки из файла без перезаписи

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
08.06.2012, 22:08     Выделить из строки с полным путем к файлу само имя файла без расширения #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int main()
{
    string s="D:\\Practis\\Proverka\\File.txt";
    int count=0;
    for(int i=s.length()-1;i>-1;i--)
    {
        if(s[i]!='.') count++;
        else break;
    }
    s.erase(s.length()-count-1,count+1);
    count=0;
    for(int i=s.length()-1;i>-1;i--)
    {
        if(s[i]!='\\') count++;
        else break;
    }
    s.erase(0,s.length()-count);
    cout<<s<<endl;
    getch();
    return 0;
}
Zhalair
1 / 1 / 0
Регистрация: 04.11.2011
Сообщений: 40
08.06.2012, 22:21  [ТС]     Выделить из строки с полным путем к файлу само имя файла без расширения #3
Спасибо!
А не иогли бы вы обьяснить строки 8 11 14?
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
08.06.2012, 22:26     Выделить из строки с полным путем к файлу само имя файла без расширения #4
Цитата Сообщение от Zhalair Посмотреть сообщение
Спасибо!
А не иогли бы вы обьяснить строки 8 11 14?
8 cтрока , определяется переменная для позиции в строке, чтобы знать сколько удалять.
11 строка, если символ в строке не равен '.' (точке) , то мы прибавляем 1 в эту переменную, чтобы знать откуда удалять и сколько.
14 строка, это стандартный метод класса string он и осуществляет удаление из строки, первый аргумент показывает откуда, а второй на сколько позиций.
The_Immortal
1548 / 484 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
08.06.2012, 22:53     Выделить из строки с полным путем к файлу само имя файла без расширения #5
Zhalair,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int main()
{
    string s="D:\\Practis\\Proverka\\File.txt";
    int count=0; // счетчик, определяющий сначала длину расширения файла, 
    //а потом длину имени самого файла
 
    for(int i=s.length()-1;i>-1;i--) //в i помещаем длину всей строки (пути к файлу); 
    //пока не конец строки; переходим к предыдущему символу в строке
    {
        if(s[i]!='.') count++; // ищем ".", если нашли, то выходим из цикла 
        // и получаем в count длину расширения, в данном случае это "txt", т.е. 3
        else break;
    }
    s.erase(s.length()-count-1,count+1); // удаляем ".txt" из нашего пути,
    //начиная с "D:\\Practis\\Proverka\\File" 
    count=0; 
    for(int i=s.length()-1;i>-1;i--)  //теперь аналогично работаем, 
    // но уже с урезанной строкой, т.е. с "D:\\Practis\\Proverka\\File" 
    {
        if(s[i]!='\\') count++; //последовательно доходим до первых "\\", 
        //в count будет уже длина имени файла, т.к двигаемся с конца
        else break;
    }
    s.erase(0,s.length()-count); //удаляем с самого начала строки
    //и до начала имени файла, т.е. сносим "D:\\Practis\\Proverka\\"
    cout<<s<<endl;
    getch();
    return 0;
}
Ну на всякий случай

Единственное, я в комментах условно двойной слэш указывал, т.к. на самом деле работа идет с одинарным. Ну я думаю, что Вы в курсе этого
Yandex
Объявления
08.06.2012, 22:53     Выделить из строки с полным путем к файлу само имя файла без расширения
Ответ Создать тему
Опции темы

Текущее время: 11:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru