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

Строки. Удалить все пробелы - C++

Восстановить пароль Регистрация
 
lokteva
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 16
15.04.2013, 17:26     Строки. Удалить все пробелы #1
Задание: Дана строка, в которой слова разделены одним пробелом и более. Удалить из нее все пробелы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"rus_rus.1251");
    string str = "q  w e r t y";
    cout<<"Строка с пробелами: "<<endl;
    while(1)
    {
        int index=str.find(' ');
            str.erase(index,1);
        if(index==string::npos)
            break;
    }
    cout<<str;
}
Почему программа не работает?????
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,887
Записей в блоге: 2
Завершенные тесты: 1
15.04.2013, 17:58     Строки. Удалить все пробелы #2
Цитата Сообщение от lokteva Посмотреть сообщение
Почему программа не работает?????
В кратце:
C++
1
2
3
int index=str.find(' ');//Когда вернется npos
str.erase(index,1);//выполнится эта строчка.
if(index==string::npos)//Потому что эта проверка стоит дальше
Исправленный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"rus_rus.1251");
    string str = "q  w e r t y";
    cout<<"Строка с пробелами: "<<endl;
     int index;
    while((index=str.find(' '))!=string::npos){
            str.erase(index,1);
    }
    cout<<str;
}
lokteva
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 16
15.04.2013, 18:03  [ТС]     Строки. Удалить все пробелы #3
Спасибо а почему программа на экран не выводит строку с пробелами?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,887
Записей в блоге: 2
Завершенные тесты: 1
15.04.2013, 18:04     Строки. Удалить все пробелы #4
Цитата Сообщение от lokteva Посмотреть сообщение
экран не выводит строку с пробелами?
ну так в коде нет её вывода. Добавьте
C++
1
cout<<str<<endl;
перед циклом
lokteva
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 16
15.04.2013, 18:23  [ТС]     Строки. Удалить все пробелы #5
спасибо большое всё получилось
Yandex
Объявления
15.04.2013, 18:23     Строки. Удалить все пробелы
Ответ Создать тему
Опции темы

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