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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Viktor111
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 33
#1

Удаление пробелов в строке - C++

05.03.2013, 10:52. Просмотров 1969. Ответов 5
Метки нет (Все метки)

вот такая задача надо что бы программа удаляла первый и последний пробел в строке. строку вводим мы сами. я вот написал что бы удаляла все пробелы но надо только первый и последний подскажите что надо поменять ??
спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    std::string str;
    size_t i;
    std::cout << "Введите строку" << std::endl;
    std::getline(std::cin, str, '\n');
    while((i=str.find(' '))!=std::string::npos)
        str.erase(i, 1);
 
    std::cout << str << std::endl;
    system("pause");
    return EXIT_SUCCESS;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2013, 10:52     Удаление пробелов в строке
Посмотрите здесь:

Удаление пробелов в введенной строке C++
Удаление пробелов C++
Удаление пробелов в строке без использования модуля <string.h> C++
C++ В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
Удаление лишних пробелов C++
C++ Удаление начальных и конечных пробелов в строке
удаление пробелов C++
C++ Создание программы со своей библиотекой ( удаление элементов с N по M в строке и удаление лишних пробелов(если 2 и более оставить один))
Удаление пробелов C++
C++ Найти число пробелов в строке и заменить их на номер по порядку в исходной строке
Удаление пробелов C++
Удаление пробелов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aagubarev
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 10
05.03.2013, 11:09     Удаление пробелов в строке #2
Цитата Сообщение от Viktor111 Посмотреть сообщение
вот такая задача надо что бы программа удаляла первый и последний пробел в строке. строку вводим мы сами. я вот написал что бы удаляла все пробелы но надо только первый и последний подскажите что надо поменять ??
спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    std::string str;
    size_t i;
    std::cout << "Введите строку" << std::endl;
    std::getline(std::cin, str, '\n');
    while((i=str.find(' '))!=std::string::npos)
        str.erase(i, 1);
 
    std::cout << str << std::endl;
    system("pause");
    return EXIT_SUCCESS;
}
С++ я не знаю, но первый ты же можешь найти в строке пробел, так и первый с конца обратным циклом попробуй найти.

а можешь попробовать str.erase(здесь использовать функцию поиска пробела); (не знаю как на с++).

Так для размышления.
Viktor111
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 33
05.03.2013, 11:15  [ТС]     Удаление пробелов в строке #3
мне надо с помощью функции "string trim ( string $s );"
pontakrin
1 / 1 / 0
Регистрация: 22.03.2010
Сообщений: 71
05.03.2013, 11:27     Удаление пробелов в строке #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
using namespace std;
 
int main(void){
     string str = " string string   string ";
 
     cout << ">" << str << "<" <<   endl;   // до
 
     str.erase(0, 1);
     str.erase(str.size() - 1, 1);
 
     cout << ">" << str << "<" <<   endl;   // после
   
   return 0;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12890 / 7276 / 811
Регистрация: 27.09.2012
Сообщений: 17,975
Записей в блоге: 2
Завершенные тесты: 1
05.03.2013, 11:38     Удаление пробелов в строке #5
Убого:
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
34
35
36
37
38
#include <iostream>
#include <string>
#include <windows.h>
size_t Trim(std::string & str){
     size_t count=str.size();
     bool flag=true;
    for(std::string::iterator it=str.begin();it!=str.end();++it){
        if(!isspace(static_cast<unsigned char>(*it))){
            str.erase(str.begin(),it);
            flag=false;
            for(std::string::iterator nit=str.end()-1;nit>str.begin();--nit){
                if(isspace(static_cast<unsigned char>(*nit))){
                    str.erase(nit);
                }else{
                    break;
                }
            }
            break;
        }
     }
     if(flag)
         str.clear();
     return count-str.size();
}
 
 
int main()
{
    SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
    std::string str;
    std::cout << "Введите строку" << std::endl;
    std::getline(std::cin, str, '\n');
     size_t c=Trim(str);
    std::cout << str <<"\nУдалено: "<<c<<" пробела(ов)"<<std::endl;;
    system("pause");
    return EXIT_SUCCESS;
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
05.03.2013, 11:50     Удаление пробелов в строке #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <boost/algorithm/string.hpp>
#include <iostream>
 
std::string trim(std::string s)
{
   boost::trim(s);
   return s;
}
 
int main()
{
   const std::string s = "  abc  ";
   std::cout << trim(s) << std::endl;
}
Это классический trim.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <boost/algorithm/string.hpp>
 
std::string trim(std::string s)
{
   boost::erase_first(s, " ");
   boost::erase_last(s, " ");
   return s;
}
 
int main()
{
   const std::string s = "  abc  ";
   std::cout << trim(s) << std::endl;
}
http://liveworkspace.org/code/1M2RII$2

По одному, с начала и конца.
Yandex
Объявления
05.03.2013, 11:50     Удаление пробелов в строке
Ответ Создать тему
Опции темы

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