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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Viktor111
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 33
05.03.2013, 10:52     Удаление пробелов в строке #1
вот такая задача надо что бы программа удаляла первый и последний пробел в строке. строку вводим мы сами. я вот написал что бы удаляла все пробелы но надо только первый и последний подскажите что надо поменять ??
спасибо
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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     Удаление пробелов в строке
Ответ Создать тему
Опции темы

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