Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390

Убрать в переменной типа string пробелы

24.02.2014, 17:46. Показов 2882. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача у меня такая.
Пользователь вводит текст с консоли.
1.Удалить все пробелы и знаки препинания.
2. Очередную букву в цикле поменять на следующую букву.

То есть к примеру я ввожу текст:
Abc, abc
Должно получатся
Bcdbcd

Добавлено через 41 секунду
Похожую тему найти не смог. Сумел написать вот столько
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Change(string x);
 
int main()
{
    string x;
    cout<<"Enter a string"<<;
    cin>>x;
    Change(&x);
    cout<<x<<endl;
 
    system("pause");
}
 
 
void Change(string x)
{
    
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2014, 17:46
Ответы с готовыми решениями:

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

Убрать пробелы из String при вводе текста с клавиатуры
Есть такой код: import java.util.*; public class proba { public static void main(String args){ Scanner keyboard =...

Как сравнить переменную типа String с переменной типа Int?
Как сравнить переменную типа String с переменной типа Int в конструкции &quot;if&quot;???

11
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.02.2014, 18:04
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
   std::cout << "-> ";
   std::string str;
   std::getline(std::cin, str);
   str.erase(std::remove_if(str.begin(), str.end(), [](char ch)
   {
      return isspace(ch) || ispunct(ch);
   }), str.end());
 
   std::cout << str << "\n";
 
   return 0;
}
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.02.2014, 18:04
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
 
int main() {
    std::string s;
    std::getline( std::cin, s );
    std::cout << s << std::endl;
    auto it = std::remove_if( s.begin(), s.end(), [](char x){return std::isspace(x) || std::ispunct(x); } );
    s.erase( it, s.end() );
    std::transform( s.begin(), s.end(), s.begin(), [](char x)->char { if(std::isalpha(x)) return x+1; else return x; } );
    std::cout << s << std::endl;
    return 0;
}
алфавит уж сами попробуйте замкнуть
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
24.02.2014, 18:11  [ТС]
DiffEreD, можно комментарии чтобы я понял?

Добавлено через 6 минут
а подскажите пожалуйста, как сделать, чтобы вместо A выводилась буква D? Вмеcто D - H? То есть чтобы разница в 3 буквы была?
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.02.2014, 18:14
^Tecktonik_KiLLeR, там обычна работа со string и STL - комментировать нечего. Примеры описываются тут: http://en.cppreference.com/w/c... ring/erase и тут: http://en.cppreference.com/w/cpp/algorithm/remove
Да, и мой код не учитывает смену букв.
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
24.02.2014, 18:18  [ТС]
Вот я немножко переделал ваш код
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
void delsymb(string str);
 
int main()
{
   cout << "-> ";
   string str;
   getline(cin, str);
  
   delsymb(&str);
 
  cout<<str<<endl;
 
   
 system("pause");
   return 0;
}
 
 
void delsymb(string str)
{
     str.erase(std::remove_if(str.begin(), str.end(), [](char ch)
   {
      return isspace(ch) || ispunct(ch);
   }), str.end());
}
функцию getline компилятор не понимает. Какую библиотеку подключить надо?
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.02.2014, 18:21
using namespace std; есть?
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
24.02.2014, 18:22  [ТС]
есть

Добавлено через 22 секунды
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
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <string.h>
#include <Windows.h>
using namespace std;
void delsymb(string str);
 
int main()
{
   cout << "-> ";
   string str;
   cin>>str;
  
   delsymb(&str);
 
  cout<<str<<endl;
 
   
 system("pause");
   return 0;
}
 
 
void delsymb(string str)
{
     str.erase(std::remove_if(str.begin(), str.end(), [](char ch)
   {
      return isspace(ch) || ispunct(ch);
   }), str.end());
}
Ошбки
Error 1 error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion) c:\documents and settings\admin.alexey\мои документы\visual studio 2010\projects\al\al\al.cpp 13 1 Al
Error 2 error C2664: 'delsymb' : cannot convert parameter 1 from 'std::string *' to 'std::string' c:\documents and settings\admin.alexey\мои документы\visual studio 2010\projects\al\al\al.cpp 15 1 Al
Error 3 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\admin.alexey\мои документы\visual studio 2010\projects\al\al\al.cpp 17 1 Al
4 IntelliSense: no operator ">>" matches these operands c:\documents and settings\admin.alexey\мои документы\visual studio 2010\projects\al\al\al.cpp 13 7 Al
5 IntelliSense: no suitable constructor exists to convert from "std::string *" to "std::basic_string<char, std::char_traits<char>, std::allocator<char>>" c:\documents and settings\admin.alexey\мои документы\visual studio 2010\projects\al\al\al.cpp 15 12 Al
6 IntelliSense: no operator "<<" matches these operands c:\documents and settings\admin.alexey\мои документы\visual studio 2010\projects\al\al\al.cpp 17 7 Al
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.02.2014, 18:28
Разве что так:
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
#include <iostream>
#include <algorithm>
#include <string>
#include <Windows.h>
 
using namespace std;
 
void delsymb(string& str);
 
int main()
{
   cout << "-> ";
   string str;
   getline(cin, str);
 
   delsymb(str);
 
   cout<<str<<endl;
 
 
   system("pause");
   return 0;
}
 
 
void delsymb(string& str)
{
   str.erase(std::remove_if(str.begin(), str.end(), [](char ch)
   {
      return isspace(ch) || ispunct(ch);
   }), str.end());
}
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
24.02.2014, 18:33  [ТС]
DiffEreD, Спасибо большое за функцию. Так в чем же ошибки были?

Добавлено через 11 секунд
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
Error 1 error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion) c:\documents and settings\admin.alexey\мои документы\visual studio 2010\projects\al\al\al.cpp 13 1 Al
например эта?

Добавлено через 2 минуты
DiffEreD, и еще скажите пожалуйста как поменять букву.
Помню было такое что то (char)65
Вот это выводит букву А. Как можно использовать этот метод для смены букв в программе. Что то наоборот нужно, (int)A?
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.02.2014, 18:45
Смена буквы:
C++
1
2
3
4
5
6
7
8
9
void delsymb(string& str)
{
   str.erase(std::remove_if(str.begin(), str.end(), [](char ch)
   {
      return isspace(ch) || ispunct(ch);
   }), str.end());
 
   std::for_each(str.begin(), str.end(), [](char& ch){++ch;});
}
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
Так в чем же ошибки были?
Функция delsymb принимала аргумент по значению, а вы ей адрес объекта string пихали, вот оно и не могло правильно привести тип одного к другому. Если функция должна модифицировать что то, то лучше что бы она это по не константной ссылке принимала.
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
24.02.2014, 18:47  [ТС]
Спасибо. А не подскажете что сделать с буквами?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2014, 18:47
Помогаю со студенческими работами здесь

Как прописать множественные пробелы в string переменной?
При написании переменной string в коде( string massege = &quot;Привет&quot;), Пропадают множественные пробелы, тоесть если напишу =&quot;Привет ...

В переменной типа string хранится имя переменной, к которой нужно обратиться. Как это сделать?
Пример: int speed = 10; string s = &quot;speed&quot;; MessageBox.Show(/*как-то обратиться к переменной, чье имя содержится в переменной...

Как убрать оконечные пробелы в строковой переменной?
как убрать оконечные пробелы в строковой переменной?

Использование переменной в другой переменной типа string
Здравствуйте, в C++ перешёл недавно и столкнулся с проблемой. Как мне в определённую часть string ввести имя пользователя? char...

Удалить все пробелы и табуляции но не перенос на другую строку из текста в переменной string
Здравствуйте. Скажите как удалить в тексте все пробелы и табуляции но не специальные символы те которые переносят на другую строку и...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru