Вернуться   Развлекательный портал CN.ru - Форум > Технологии > Программирование > Начинающим

Ответ
 
Опции темы
Старый 22.07.2008, 10:49 ↑ #111
tord
новый эго-житель
 
Регистрация: 12.05.2008
Сообщений: 5
Репутация: 0
tord молчание-золото
По умолчанию Re: Уроки программирования на C++ для начинающих

Кто-нить может подсказать следующее:
Есть строка "R Привет любимая R работа", и мне надо чтобы символы R в ней заменялись на другой текст, для этого вместо R я хочу подставить свою переменную в программе. Как это можно сделать?
Пробовал strtok, но корректно не получается вставить свою переменную в разбитые ею куски, например тогда, когда R стоит в начале строки.
tord вне форума   Ответить с цитированием
Старый 22.07.2008, 12:46 ↑ #112
Deckard Мужской
новосёл
 
Регистрация: 28.01.2007
Адрес: Новосибирск
Возраст: 39
Сообщений: 14
Репутация: 0
Deckard молчание-золото
Отправить сообщение для Deckard с помощью ICQ Отправить сообщение для Deckard с помощью Skype™
По умолчанию Re: Уроки программирования на C++ для начинающих

строка это массив символов.
посимвольно просматривай исходную строку, если очередной символ == 'R', то делай strcat(rezultstring, "mytext"), а если нет - то считанный символ становится последним символом результирующей строки.
повторять пока не будет считан нулевой символ.
Deckard вне форума   Ответить с цитированием
Старый 22.07.2008, 19:47 ↑ #113
tord
новый эго-житель
 
Регистрация: 12.05.2008
Сообщений: 5
Репутация: 0
tord молчание-золото
По умолчанию Re: Уроки программирования на C++ для начинающих

Deckard, ну эт понятно, что можно строки склеить, но мне надо, чтобы можно было не просто строку подставить, а именно переменную, которая будет содержать различные типы данных.
tord вне форума   Ответить с цитированием
Старый 22.07.2008, 23:21 ↑ #114
Angstream
абориген
 
Аватар для Angstream
 
Регистрация: 18.01.2005
Сообщений: 201
Angstream отключил(а) отображение уровня репутации
Отправить сообщение для Angstream с помощью ICQ
По умолчанию Re: Уроки программирования на C++ для начинающих

Цитата:
Сообщение от tord Посмотреть сообщение
Deckard, ну эт понятно, что можно строки склеить, но мне надо, чтобы можно было не просто строку подставить, а именно переменную, которая будет содержать различные типы данных.
Смотри в сторону find/replace из STL, любые типы данных не получится, получится только те, для которых определен оператор << в поток вывода.
Angstream вне форума   Ответить с цитированием
Старый 22.07.2008, 23:46 ↑ #115
tord
новый эго-житель
 
Регистрация: 12.05.2008
Сообщений: 5
Репутация: 0
tord молчание-золото
По умолчанию Re: Уроки программирования на C++ для начинающих

Что, неужели никак нельзя сделать, чтоб получилось например следующее:

int M;
AnsiString text;
text=M+ "Привет любимая"+ M+ "работа"; ?
tord вне форума   Ответить с цитированием
Старый 22.07.2008, 23:52 ↑ #116
heilage
ну просто полный
абориген
 
Аватар для heilage
 
Регистрация: 26.11.2007
Возраст: 32
Сообщений: 139
Репутация: 16
heilage на старте
Отправить сообщение через Jabber пользователю heilage
По умолчанию Re: Уроки программирования на C++ для начинающих

strstream mystr;
int M;
mystr << M << "Привет любимая" << M << "работа";

примерно так, но за точность не ручаюсь. _НО_, начинающим лучше все же пользоваться примитивами вроде strcat, как написал Deckard. Потому что без основ С в С++ лучше НЕ ЛЕЗТЬ. Более продвинутым - писать собственный объект с перегруженными функциями. Там и до фреймворка недалеко, если базовые типы инкапсулировать в собственные объекты. Основной вопрос - оно надо?
__________________


heilage вне форума   Ответить с цитированием
Старый 23.07.2008, 09:09 ↑ #117
Deckard Мужской
новосёл
 
Регистрация: 28.01.2007
Адрес: Новосибирск
Возраст: 39
Сообщений: 14
Репутация: 0
Deckard молчание-золото
Отправить сообщение для Deckard с помощью ICQ Отправить сообщение для Deckard с помощью Skype™
По умолчанию Re: Уроки программирования на C++ для начинающих

Да. Научитесь сначала по-простому делать, а усложнить задачу всегда можно.
Deckard вне форума   Ответить с цитированием
Старый 23.07.2008, 11:44 ↑ #118
tord
новый эго-житель
 
Регистрация: 12.05.2008
Сообщений: 5
Репутация: 0
tord молчание-золото
По умолчанию Re: Уроки программирования на C++ для начинающих

Да я вот и пытаюсь сделать хоть по-простому, хоть по-сложному, но не получается ))
"mystr << M << "Привет любимая" << M << "работа";" - про это я б не стал на форуме спрашивать, тут любому понятно будет )))
Мне-то надо вот что: вводится строка "R Привет любимая R работа" или "Привет любимая R работа" или "Прощай работа" или "RRR работа R" , вобщем любая строка, и мне надо в ней найти символы R, если они есть и заменить их на мою переменную, понимаете? , поэтому жесткое описание "mystr << M << "Привет любимая" << M << "работа";" тут не подходит.
tord вне форума   Ответить с цитированием
Старый 23.07.2008, 13:16 ↑ #119
heilage
ну просто полный
абориген
 
Аватар для heilage
 
Регистрация: 26.11.2007
Возраст: 32
Сообщений: 139
Репутация: 16
heilage на старте
Отправить сообщение через Jabber пользователю heilage
По умолчанию Re: Уроки программирования на C++ для начинающих

ну а если просто разложить задачу на более простые (то бишь сделать блок-схему алгоритма) и написать ну пусть несколько коряво, но по-своему? Например, мне кажется, к поставленной задаче подходит последовательность:
1. Взять символ из входного потока
2. Если символ не подлежит замене, скопировать (присоединить) его в выходной поток, иначе - присоединить в выходной поток то, на что он должен быть заменен.
3. Если не конец файла/строки, то перейти к п.1.

По-моему достаточно просто. К тому же есть куда усовершенствовать алгоритм скажем, чтобы заменять можно было не один символ, а их последовательность
__________________


heilage вне форума   Ответить с цитированием
Старый 23.07.2008, 13:18 ↑ #120
Deckard Мужской
новосёл
 
Регистрация: 28.01.2007
Адрес: Новосибирск
Возраст: 39
Сообщений: 14
Репутация: 0
Deckard молчание-золото
Отправить сообщение для Deckard с помощью ICQ Отправить сообщение для Deckard с помощью Skype™
По умолчанию Re: Уроки программирования на C++ для начинающих

tord, что значит "заменить на переменную"? Переменная - это область памяти, в ней содержится какое-то значение, переменые отличаются типом. Можно сравнить с единицами измерения - килограммы нельзя сложить с вольтами. Но в программировании, в отличии от физики, можно выполнить приведения к нужным типам. Вот. А если у вас есть переменная произвольного типа, которая называется R, то тут вам ничего не поможет. Машинный код, генерируемый компилятором, ничего не знает об именах, которые вы давали своим переменным, он знает только что есть адреса в памяти, регистры в процессоре и набор команд.
Deckard вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Текущее время: 22:04. Часовой пояс GMT +6.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot

ВКонтактeTwitterFacebook
Хотите связаться с нами? Напишите письмо, и мы обязательно ответим.