powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
10 сообщений из 10, страница 1 из 1
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33084354
ddS'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Напр., есть массив со строкой "RTS-6544 GTRH4.W653-1" и в этой строке надо заменить буквы "R" на "F", "G" на "R", "T" на "S", "H" на "A". Как это сделать через if или условную операцию, но что бы код был поменьше???
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33084578
ddS'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну неужели никто не знает как это сделать???
Помогите, пожалуйста, на вас вся надежда!!!!
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33084589
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
	{
	char *input = "RTS-6544 GTRH4.W653-1";
	char *output,*p;
	int n = strlen(input);
	
	p=output = new char[n+ 1 ];
	strcpy(output, input);

	while(*p)
		{
		switch(*p)
			{
			case 'R':
				*p++ = 'F';
				continue;
			case 'G':
				*p++ = 'R';
				continue;
			case 'T':
				*p++ = 'S';
				continue;
			case 'H':
				*p++ = 'A';
				continue;
			default:
				++p;
				continue;
			}
		}

	puts(output);
	delete[] output;

	return  0 ;
	}


Или через STL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;

int main(int argc,char *argv[])
	{
	char *intput = "RTS-6544 GTRH4.W653-1";
	char *output;
	
	string s(intput);

	replace(s.begin(), s.end(), 'R', 'F');
	replace(s.begin(), s.end(), 'G', 'R');
	replace(s.begin(), s.end(), 'T', 'S');
	replace(s.begin(), s.end(), 'H', 'A');

	output = new char[s.size()+ 1 ];
	strcpy(output, s.c_str());
	cout<<output;
	delete[] output;
	return  0 ;
	}
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33084614
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если switch не подходит то можно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
int main(int argc,char *argv[])
	{
	char *input = "RTS-6544 GTRH4.W653-1";
	char *output,*p;
	int n = strlen(input);
	
	p=output = new char[n+ 1 ];
	strcpy(output, input);

	while(*p)
		{
		if(*p=='R') *p++ = 'F'; else
		if(*p=='G') *p++ = 'R'; else
		if(*p=='T') *p++ = 'S'; else
		if(*p=='H') *p++ = 'A'; else
		++p;
		}

	puts(output);
	delete[] output;

	return  0 ;
	}
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33084620
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ddS'Напр., есть массив со строкой "RTS-6544 GTRH4.W653-1" и в этой строке надо заменить буквы "R" на "F", "G" на "R", "T" на "S", "H" на "A". Как это сделать через if или условную операцию, но что бы код был поменьше???

Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
char str[]="RTS-6544 GTRH4.W653-1"
...
for(int i= 0 ;i<strlen(str);i++)
{
 switch (str[i]){
 case 'R':
   str[i]='F';
   break;
 case 'G':
   str[i]='R';
   break;
 case 'T':
  str[i]='S';
  break;
 case 'H': 
  str[i]='A';
  break;
}
}
Это решение "в лоб", но по-другому, извини, не получится. Уж слишком неформализованное задание дано...
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33084622
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#include <iostream>

char *chrtran(char *in, char const *src, char const *dst)
{
	for(char *h = in; *h; h++)
		for(char const *si = src, *di = dst; *si && *di; si++, di++ )
			if( *h == *si )
				*h = *di;
	return in;
}

int main()
{
	char buffer[] = "RTS-6544 GTRH4.W653-1";
	char const *s = "RGTH";
	char const *d = "FRSA";

	std::cout << buffer << '\n';
	std::cout << chrtran(buffer, s, d) << '\n';
}
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33084832
ddS'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВСЕМ большое спасибо за помощь!!!
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33148684
Эндрю В
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ddS'ВСЕМ большое спасибо за помощь!!!
а если через STL или подобное, но при условии не
char*
а wchar_t *
???
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33151943
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эндрю В ddS'ВСЕМ большое спасибо за помощь!!!
а если через STL или подобное, но при условии не
char*
а wchar_t *
???

Точно так же.... Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
wstring& ch_str(wstring &src, const wstring &s1, const wstring &s2) 
{
	typedef wstring::iterator WIt;
	typedef wstring::const_iterator WCIt;
	map<wchar_t, wchar_t> wMap;

	for(WCIt it1 = s1.begin(), it2 = s2.begin(); it1 != s1.end() && it2 != s2.end(); it1++, it2++)
		wMap[*it1] = *it2;

	for(WIt it = src.begin(); it != src.end(); it++)
		if(wMap.find(*it) != wMap.end())
			*it = wMap[*it];
	return src;
}

...

wstring s = L"ABCD";
wstring s1 = L"AD";
wstring s2 = L"MN";

s = ch_str(s, s1, s2);
wcout << s << endl << s1 << endl << s2 << endl;


Хотя, чтобы не метаться между char, wchar_t можно и сразу шаблон:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
template<class T> basic_string<T>& ch_strT(basic_string<T> &src, 
const basic_string<T> &s1, 
const basic_string<T> &s2) 
{
	typedef basic_string<T>::iterator WIt;
	typedef basic_string<T>::const_iterator WCIt;
	map<T, T> wMap;

	for(WCIt it1 = s1.begin(), it2 = s2.begin(); it1 != s1.end() && it2 != s2.end(); it1++, it2++)
		wMap[*it1] = *it2;

	for(WIt it = src.begin(); it != src.end(); it++)
		if(wMap.find(*it) != wMap.end())
			*it = wMap[*it];
	return src;
}
...
Рейтинг: 0 / 0
Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
    #33152405
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин! Фундаменталисты. Чел. просил всего лишь буквы заменить!
Раздули до шаблонов!

P.S. Просил я только масла на завтрак мне подать! (английская нароная сказка)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйсмта, как заменить одни символы в строке на другие?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]