Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 04.09.2013
Сообщений: 22
1

Удаление строки до последнего пробела (включительно)

02.12.2015, 18:18. Просмотров 749. Ответов 9
Метки нет (Все метки)

День добрый всем!
Дана строка, содержащая слова отделенные одним или несколькими пробелами.
Задача: удалить последовательно все части строки до последнего пробела включительно.
Алгоритм получается таким:
пока s.find возвращает нам индекс пробела в строке отличный от -1 (т.е. пробелов в строке не осталось)
получаем индекс и удаляем с 0 по n - 1 символ.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "iostream"
#include <string>
using namespace std;
int main()
{
    string s;
    int n;
    getline(cin, s);
    while (s.find(" ") != -1) {
                n = s.find(" ");
        s.erase(0, n - 1);
    }
    cout << s;
    return 0;
}
при ввод данных: слово - пробел - слово
программа зацикливается, s.find(" ") возвращает всегда 1.
Что неправильно я делаю?
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2015, 18:18
Ответы с готовыми решениями:

Удаление пробела после последнего элемента
Подскажите пожалуйста как в етой програме удалить пробел после последнего елемента: var ...

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

Вывести подстроку, начиная с символа после последнего пробела и до конца строки (без string.h)
нужно вывести подстроку начиная с символа после последнего пробела и до конца строки. при этом...

Удаление конечного пробела из строки
Помогите пожалуйста написать программу, которая удаляет конечные пробелы из введенной с...

9
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
02.12.2015, 18:27 2
C++
1
s.erase(0, n + 1);
Попробуй так сделать
1
1 / 1 / 1
Регистрация: 04.09.2013
Сообщений: 22
02.12.2015, 19:27  [ТС] 3
мда.... это клиника))) откуда я взял это n - 1 не понятно... спасибо

Добавлено через 48 минут
пользуясь темой....
почему, если строка пустая - т.е. заканчивалась пробелами
результат s.length() - 1 возвращает не "-1", а 4294967295
что это за число и откуда оно взялось?
0
1358 / 582 / 198
Регистрация: 02.08.2011
Сообщений: 2,880
02.12.2015, 19:34 4
del
0
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
02.12.2015, 19:35 5
Не знаю увы. От куда этот мусор взялся.

Добавлено через 21 секунду
Что за del можно поподробнее ?
0
1358 / 582 / 198
Регистрация: 02.08.2011
Сообщений: 2,880
02.12.2015, 19:37 6

Не по теме:

дел - это не по теме. ошибка. торопился. прошу удалить.


C++
1
2
while (s.find(" ") != -1) //Неправильно
while (s.find(" ") != s.npos) //Правильно
0
1 / 1 / 1
Регистрация: 04.09.2013
Сообщений: 22
02.12.2015, 19:51  [ТС] 7
s.npos возвращает число? или некий параметр "ничего не найдено"
0
1358 / 582 / 198
Регистрация: 02.08.2011
Сообщений: 2,880
02.12.2015, 20:00 8
C++
1
2
3
4
5
6
7
8
9
10
11
#include "iostream"
#include <string>
using namespace std;
int main()
{
    size_t i=-1;
    string S = "";
 
    cout << S.npos << '\n' << i << '\n';
 
}
0
1 / 1 / 1
Регистрация: 04.09.2013
Сообщений: 22
02.12.2015, 20:07  [ТС] 9
спасибо...
0
1358 / 582 / 198
Регистрация: 02.08.2011
Сообщений: 2,880
02.12.2015, 20:38 10
Это число, равное максимальному размеру теоретически возможного объекта любого типа.
Простыми словами: Это число, обозначающее теоретический конец строки. Очень, очень далеко от начала строки. Теоретически индекс строки с таким номером - это номер самого самого последнего возможного символа строки.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2015, 20:38

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

Удаление до пробела из строки и вывод в checkedListBox
Есть &quot;программа&quot; которая по кнопке загружает из файла .csv данные и выводит в checkedListBox. Но...

Удаление символа из строки после пробела
Здравствуйте, проблемы с решением такого задания : Дана строка символов, состоящая из произвольного...

Удаление смиволов из input до определенного символа включительно с конца строки
Есть инпут ака текстовое поле, в которое вводим символы, символы могут повторяться, потому скан с...

Удаление последнего символа строки
Нужно удалить последний символ, пробовал так, но выбивает белый экран: &lt;script...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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