Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2018, 17:50   #1
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию Удаление символа из строки.

Здравствуйте!
Написал код, но не могу закончить. Надо удалить символ из строки во время работы цикла.
Задача: удалять все цифры после второй цифры идущие после точки. Ну типа создать программку по такому вот форматированию строки.
Код:
#include<iostream>
#include<string>
using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	string word;
	int c;
	cout << "Введите строку: \n";
	cin >> word;
	int wlen = word.size();
	for (int j = 0; j < wlen; j++)
	{
		word.at(j);
		if('.')
			while ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
			{
				j++;
				word.at(j);
				if ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
				{
					if (c >= 2)
						delete;
					c++;
				}
			}
	}
	return 0;
}
Выдаёт ошибку по delete. Что использовать вместо него? erase работает только с объектами стринг.
KAMLS вне форума Ответить с цитированием
Старый 11.01.2018, 18:54   #2
Андрей Ш++
учу с++
Пользователь
 
Аватар для Андрей Ш++
 
Регистрация: 06.10.2017
Сообщений: 44
Радость

А что должна делать то программа??
Андрей Ш++ вне форума Ответить с цитированием
Старый 12.01.2018, 16:01   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Программа должна удалять все цифры после второй которые начинаются после точки. До следующего символа не цифры.
KAMLS вне форума Ответить с цитированием
Старый 12.01.2018, 16:31   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

так у вас и есть объект string, чем erase не подошел?
и условия неправильные.
Код:
if ('.' == word[j])
{
  ++j;
  while (word[j] == '0' || word[j] == '1' || ...)
 ...
  word.erase(j,1);
}
ну, там еще у цикла for границу поменять надо, т.к. точка не может быть последним символом
pu4koff вне форума Ответить с цитированием
Старый 14.01.2018, 15:11   #5
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Сделал. Действительно криво было. Но вот какая штука. Стал компилятор требовать от меня знаки разные. Точку с запятой в конце условия цикла while. Сроду не ставил, а тут ему надо. И что интересно, ставишь, ошибку убирает.
Вот код
Код:
#include<iostream>
#include<string>
using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	string word;
	int c=1;
	cout << "Введите строку: \n";
	cin >> word;
	int wlen = word.size();
	for (int j = 0; j < wlen; j++)
	{
		word.at(j);
		if(word[j]=='.')
		{
			++j;
			while (word[j]=='0' || word[j]=='1' word[j]=='2' || word[j]=='3' || word[j]=='4' || word[j]=='5' || word[j]=='6' || word[j]=='7' || word[j]=='8' || word[j]=='9')
			{
				j++;
				word.at(j);
				if (word[j]=='0' || word[j]=='1' word[j]=='2' || word[j]=='3' || word[j]=='4' || word[j]=='5' || word[j]=='6' || word[j]=='7' || word[j]=='8' || word[j]=='9')
				{
					if (c >= 2)
						word.erase(j,1);
					c++;
				}
			}
		}
	}
	return 0;
}
Скриншот с ошибками прикреплён. Куда ставить скобки не пойму.
Изображения
Тип файла: jpg кадр.jpg (120.6 Кб, 116 просмотров)
KAMLS вне форума Ответить с цитированием
Старый 14.01.2018, 15:44   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Посмотрите уже на ASCII таблицу и определение типа char и напишите нормальное короткое условие.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.01.2018, 17:10   #7
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Это так?
unsigned char a=48;
unsigned char b=57;
while(a:b)
{
Честно говоря пока не обучен этому делу. В учебнике было всего несколько строк про эту таблицу.
KAMLS вне форума Ответить с цитированием
Старый 14.01.2018, 17:28   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

ch >= '0' && ch <= '9'
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.01.2018, 17:53   #9
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

ch определяется как char или unsigned char?
И инициализируется ли вообще предварительно?
Или просто определяется?
Правда, стыдно иногда делается, чую, что вроде бы это знать надо как дважды два, но если информации пока нет, то возьмётся только откуда то.
Раньше я так пользовался таблицей ASCII
Код:
#include<iostream>
using namespace std;
#include<conio.h>
int main()
{
	
	const unsigned char WHITE=219;
	const unsigned char GRAY=176;
	unsigned char ch;
	for(int count=0; count<80*25-1; count++)
	{
		ch=WHITE;
		for(int j=2; j<count; j++)
			if(count%j==0)
			{
				ch=GRAY;
				break;
			}
			cout<<ch;
	}
	getch();
	return 0;
}
KAMLS вне форума Ответить с цитированием
Старый 14.01.2018, 18:23   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

char, у вас же символы.
unsigned char обычно для хранения байтов используют (в новых стандартах есть более удобный uint8_t).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi удаление символа из строки! sokolik-117845 Помощь студентам 1 09.04.2012 14:32
Удаление строки до определенного символа glebast Помощь студентам 25 02.03.2012 01:30
Удаление символа из строки Alex1991 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 23.11.2010 20:58
Удаление символа из строки forsaken66 Общие вопросы C/C++ 4 06.11.2009 11:33
удаление символа окончания строки Xozer SQL, базы данных 1 07.02.2008 12:19