Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
3 / 3 / 4
Регистрация: 03.03.2015
Сообщений: 51

Из строки вывести некоторые элементы в новую строку

22.11.2015, 22:57. Показов 1244. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть строка string:
C++
1
2
3
qqq-www
aaa-sss
zzz-xxx
Должно получиться:
C++
1
2
3
qqq
aaa
zzz
Тоже типа string.
Как это реализовать - не знаю. Пробовал и как-то через strchr и просто циклами искал, что-то не получалось...
Даже гугл, на удивление, не помог .-.

Добавлено через 27 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string str = "qqq-www\naaa-sss\nzzz-\nxxx";
    cout << str<< endl;
    string base;
    int j = 0;
    for (int i = 0; i < str.length(); i++){
        if (str[i] != '-'){
            base[j] = str[i];
            j++;
        } else{
            while(str[i] != '\n' || str[i] != '\0'){
                i++;
            }
        }
 
    }
    cout << base << endl;
Вот, что у меня вышло, но код не работает

Добавлено через 6 минут
Видимо, так можно делать только со строками char, но все равно, у меня "не видит" \n...

Добавлено через 27 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
char str[24] = "qqq-www\naaa-sss\nzzz-xxx";
    char *base;
    base = new char;
    int j = 0;
    for (int i = 0; i < 24; i++){
        if (str[i] != '-'){
            base[j] = str[i];
            j++;
        } else{
            base[j] = '\n';
            j++;
            do{
                i++;
                if ((str[i] == '\n') || (str[i] == '\0')){
                    break;
                }
            }while(1);
        }
 
    }
    cout << "\n" << base << endl;
Получил такой код. Только в конце какая-то какашка...


C++
1
2
3
4
qqq
aaa
zzz
Ююю
Видимо, выделяется памяти больше, чем необходимо...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2015, 22:57
Ответы с готовыми решениями:

Определить в строках элементы, которые совпадают и из них вывести новую строку
Ребята помогите!!!! Задание: дано 2 строки, определить в них елементы(буквы), которые совпадают и из них вывести новую строку!!!!!

Строки: вывести в новую строку только те слова, длина которых нечетна
Дано предложение, в котором слова разделены пробелами. Вывести в новую строку только те слова, длина которых нечетна.

Вводят строку. Найти в ней все слова с буквой "Z" и переместить их в другую строку. Вывести новую строку
Недавно начал изучать этот язык. Было все не плохо, но тут учитель решил поставить меня в тупит такой задачей... Вводят строку. Найти в...

6
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
22.11.2015, 23:04
Лучший ответ Сообщение было отмечено Анатолий228 как решение

Решение

В while нужно было использовать '&&', и не искать символ конца строки, а сравнивать с длиной
ну и так, по мелочи еще поправил

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    string str = "qqq-www\naaa-sss\nzzz-xxx";
    cout << str << endl << "==================" << endl;
    string base;
 
    for (int i = 0; i < str.length(); i++)
    {
        if (str[i] != '-')
            base += str[i];
        else
        {
            while(str[i] != '\n' && i < str.length())
                i++;
            base += '\n';
        }
    }
    cout << base << endl;
1
14 / 14 / 1
Регистрация: 14.03.2015
Сообщений: 113
22.11.2015, 23:06
а base завершить не нужно?
1
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
22.11.2015, 23:09
fitochay, это string. Он сам следит за концом строки. Кстати, в вашем варианте данные туда даже не заносились (base[j] = str[i].
0
3 / 3 / 4
Регистрация: 03.03.2015
Сообщений: 51
22.11.2015, 23:13  [ТС]
Вот, что вышло у меня. Да, нужно было указать конец строки)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    char str[24] = "qqq-www\naaa-sss\nzzz-xxx";
    char *base;
    base = new char;
    int j = 0;
    for (int i = 0; i < 24; i++){
        if (str[i] != '-'){
            base[j] = str[i];
            j++;
        } else{
            base[j] = '\n';
            j++;
            do{
                i++;
                if ((str[i] == '\n') || (str[i] == '\0')){
                    break;
                }
            }while(1);
        }
        if (i == 23){
            base[j] = '\0';
        }
    }
    cout << "\n" << base << endl;
Добавлено через 3 минуты
А, понял. Пришлось помучаться с этим целый час из-за невнимательности, считай)
0
14 / 14 / 1
Регистрация: 14.03.2015
Сообщений: 113
22.11.2015, 23:15
Vaiz, дык дан изначально чар. смысл переделывать, если можно просто конец воткнуть
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
22.11.2015, 23:27
Цитата Сообщение от fitochay Посмотреть сообщение
Vaiz, дык дан изначально чар. смысл переделывать, если можно просто конец воткнуть
Сначала был стринг. Я и не заметил, что вы его заменили.
Вообще советую пользоваться string, раз уж начали, сырой char редко кто использует в серьезных программах.

Добавлено через 8 минут
P.S. Еще и не заметил, что с разными людьми разговариваю)
Ставьте аватарки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2015, 23:27
Помогаю со студенческими работами здесь

Создать новую строку из символов 1-ой заданной строки, которые не входят во вторую заданную строку
Pascal:Создать новую строку из символов 1-ой заданной строки, которые не входят во вторую заданную строку.

Для заданной строки сформировать новую строку, состоящую только из цифр, входящих в начальную строку
Функция записи и тестирования, которая для заданной строки формирует новую строку, состоящую только из цифр, входящих в начальную строку....

Заданы две строки. Построить новую строку, состоящую из символов, которые входят как в одну, так и в другую строку
Прошу помощи!

Выбрать строку с наибольшей суммой элементов и вывести элементы этой строки в вектор
Задана матрица Z(6,5). Выбрать строку с наибольшей суммой элементов и вывести элементы этой строки в вектор, затем каждый...

Из строки сформировать новую строку, содержащую символы цифр исходной строки
Из введенной символьной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru