Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ пункт в никак не получается https://www.cyberforum.ru/ cpp-beginners/ thread2599005.html
Разработать программу для упрощения работы с путем (Path) к файлу в файловой системе. Привязку к реальному диску делать необязательно. Реализовать: а)функцию определения того, является ли путь...
C++ Как в такой ассоциативный массив добавить новые данные через emplace/make_pair?
Есть класс контейнер, который содержит в себе объекты двух других классов. Вопрос: как в такой ассоциативный массив добавить новые данные через emplace/make_pair? Возможно есть ошибки в коде. В...
C++ Как переписать все положительные элементы с одного массива в другой
Мои наработки: #include <iostream> using namespace std; int main() { int n; cout <<"Enter saze massive: ";
C++ Нужно модифицировать программу Нужно сделать задания 2, 3, 4, 5, 9 https://www.cyberforum.ru/ cpp-beginners/ thread2598996.html
C++ Вывод матрицы https://www.cyberforum.ru/ cpp-beginners/ thread2598995.html
в файле матрица 3*3, а программа выводит так #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <conio.h> #include <fstream> using namespace std; float **readf(FILE*, int &n); void...
C++ Программа игнорирует цикл, с++
Задание Определить средний рост девочек, и мальчиков одного класса. В классе учится n учеников. Программа #include <stdio.h> int main() {
C++ поля для структур
Добрый вечер! Очень срочно нужна ваша помощь. Для ниже перечисленных структур придумайте поля (3-4 поля), определите наиболее подходящие типы данных для полей, а затем напишите код этих структур...
C++ Составить подпрограмму для вычисления значения натурального числаза заданным строкой символов, является записью этого чи Составить подпрограмму для вычисления значения натурального числа за заданным строкой символов, является записью этого числа в системе счисления по основанию b (2 <b <16). https://www.cyberforum.ru/ cpp-beginners/ thread2598977.html
C++ Вычислить значение натурального числа заданного строкой символов в указанной системе счисления https://www.cyberforum.ru/ cpp-beginners/ thread2598973.html
Скласти підпрограму для обчислення значення натурального числаза заданим рядком символів, який є записом цього числа в системі числення за основою b (2< b < 16). Составить подпрограмму для...
C++ Массив, с++ Помогите написать задачу. Заполните массив случайными числами в интервале . Определить, есть ли в нем элементы с одинаковыми значениями, стоящие рядом. https://www.cyberforum.ru/ cpp-beginners/ thread2598964.html
Параллельный Кот
1899 / 822 / 349
Регистрация: 25.03.2016
Сообщений: 2,040
15.03.2020, 22:09 0

Слияние строк

15.03.2020, 22:09. Просмотров 140. Ответов 1
Метки (Все метки)

Ответ

Цитата Сообщение от dsarew Посмотреть сообщение
C++
1
2
3
4
if (way [i]=='.')
{
return true;// true=файл
}
Возможно я вас огорчу, но наличие точки в имени совсем не означает, что это файл, поскольку в имени папки так же может присутствовать точка. Пытаться определить тип объекта только по его имени равносильно гаданию на кофейной гуще. Разве что считать путь, оканчивающийся на / папкой, иначе файлом. Но это не точно.

Цитата Сообщение от dsarew Посмотреть сообщение
б)функцию, которая возвращает только имя файла (с расширением или нет);
Найти последний / и все, что после него - имя, иначе весь путь является именем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
    string getFileName() const {
        const size_t delim_pos = way.rfind("/");
//        size_t delim_pos = string::npos;
//        for (size_t i = way.length() - 1; i != string::npos; --i) {
//            if (way[i] == '/') {
//                delim_pos = i;
//                break;
//            }
//        }
 
        return (delim_pos == string::npos ? way : way.substr(delim_pos + 1));
    }
Добавлено через 4 минуты
Тест

(взят здесь)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Path path_list[] = {
    string("/foo/bar.txt"),
    string("/foo/.bar"),
    string("/foo/bar/"),
    string("/foo/."),
    string("/foo/.."),
    string("."),
    string(".."),
    string("/"),
    string("//host")
};
 
for (const Path &path : path_list) {
    cout << "\"" << path.getFileName() << "\"" << endl;
}
Output:
Код
"bar.txt"
".bar"
""
"."
".."
"."
".."
""
"host"


Добавлено через 22 минуты
Цитата Сообщение от dsarew Посмотреть сообщение
с расширением или нет
Сначала подумал, что это значит "не важно, с расширением или нет". Но скорее всего необходимо обеспечить выбор. Тогда еще нужно найти точку, если она не на первом и не на последнем месте, то отбросить расширение.

Кликните здесь для просмотра всего текста
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
    string getFileName(bool include_ext = true) const {
        const size_t delim_pos = way.rfind("/");
//        size_t delim_pos = string::npos;
//        for (size_t i = way.length() - 1; i != string::npos; --i) {
//            if (way[i] == '/') {
//                delim_pos = i;
//                break;
//            }
//        }
        string filename = (delim_pos == string::npos ? way : way.substr(delim_pos + 1));
        if (!include_ext) {
            const size_t ext_pos = filename.rfind(".");
//            size_t ext_pos = string::npos;
//            for (size_t i = filename.length() - 1; i != string::npos; --i) {
//                if (filename[i] == '.') {
//                    ext_pos = i;
//                    break;
//                }
//            }
 
            if ((ext_pos != 0) && (ext_pos != filename.length() - 1)) {
                filename = filename.substr(0, ext_pos);
            }
        }
 
        return filename;
    }


Вернуться к обсуждению:
Слияние строк
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2020, 22:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Перегрузка операторов и слияние строк типа char*
Доброго времени суток! Есть класс, для объектов которого перегружен оператор +. Класс представляет...

Динамический двумерный массив строк и операции со строками (поиск, обрезка, слияние)
Создать динамический двумерный массив на 10 ячеек (для десяти строк). Заполнить его строчками...

Слияние массивов
я новичек в программировании. Помогите пожалуйста решить слудеющию задачу на С++. Заданы три...

Бинарное слияние
Не получается реализовать алгоритм. Хелп плз. ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.