Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/65: Рейтинг темы: голосов - 65, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 6

Копирование подстроки в строку

04.04.2012, 19:59. Показов 13774. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Идея вот в чем:
Есть 4 поля S1, S2. pos,kol.
В S1 и S2 нужно ввести значения букв или цифр,
в строках: pos,kol мы вводим начальную позицию и количество копируемых символов,
Результат копирования выводим в строку Res

Есть кодне уверен что он правильный)
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button6Click(TObject *Sender)
{
  AnsiString str1,str2,str3; int pos, kol;
  str1=S1->Text;
  str2=S2->Text;
  str3=str1.SubString(pos,kol);
  str3=str1+str2;
  Res->Text= str3;
}
В какой-то момент после смены некоторых параметров в строке:
C++
1
str3=str1.SubString(pos,kol);
, если я изменяю значения pos,kol на цифры, то роде бы получается.
Но! Мне нужно чтобы он выводил в результат не статические значения, а те которые вврдятся с клавиатуры в поля: pos,kol.
Подскажите господа, помогите пожалуйста с кодом.
Что, где поменять?
Три дня думаю, никак не додуматься .
картинка прилагается
Название: Снимок.JPG
Просмотров: 1732

Размер: 18.8 Кб
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.04.2012, 19:59
Ответы с готовыми решениями:

Разбить строку на подстроки
Мне нужно считать строки из файла и разбить их на подстроки Считываю я строки таким образом: TStringList *file= new TStringList; ...

Разбить строку на подстроки
Нужна помощь в разбиении строки на подстроки. Есть строка: "разум дан человеку того чтобы разумно жил того только чтобы понимал неразумно...

Разбить строку на 2 подстроки
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Разбить исходную строку на две подстроки, причем первая...

12
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
04.04.2012, 20:37
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str1 = Edit1->Text;    //строка
  AnsiString str2 = Edit2->Text;    //подстрока
  int pos = StrToInt(Edit3->Text);  //позиция подстроки
  int kol = StrToInt(Edit4->Text);  //количество копируемых символов
  Edit5->Text = str1 + str2.SubString(pos, kol);  //результат
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.04.2012, 20:41
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button6Click(TObject *Sender)
{
  AnsiString str1,str2,str3;
  int pos, kol;
  str1=S1->Text;
  str2=S2->Text;
 
  pos=StrToInt(S3->Text); // или как там у вас эти поля называются
  kol=StrToInt(S4->Text); // или как там у вас эти поля называются
 
  str3=str1.SubString(pos,kol);
  str3=str1+str2;
  Res->Text= str3;
}
Если я правильно понял задачу.
0
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 6
04.04.2012, 21:31  [ТС]
У меня с детства плохо с объяснением, сорри.
строка 1 S1-имеет присвоенное имя 'S1'
строка 2 S2-имеет присвоенное имя 'S2'
строка Начальная позиция Pos -имеет присвоенное имя 'pos'
строка количество,Kol имеет присвоенное имя 'kol'

Вывод результата осуществляется в строку с именем Res

Этот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button6Click(TObject *Sender)
{
  AnsiString str1,str2,str3;
  int pos, kol;
  str1=S1->Text;
  str2=S2->Text;
 
  pos=StrToInt(S3->Text/*S3, я меняю значение на  pos*/; // èëè êàê òàì ó âàñ ýòè ïîëÿ íàçûâàþòñÿ
  kol=StrToInt(S4->Text/*S4 , я меняю значение на kol*/; // èëè êàê òàì ó âàñ ýòè ïîëÿ íàçûâàþòñÿ
 
  str3=str1.SubString(pos,kol);
  str3=str1+str2;
  Res->Text= str3;
}
Не работает!
Может я объявляю лишние переменные?

И еще вопрос, при таком коде копируется только из подстроки? в строку?
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
04.04.2012, 21:34
C++
1
2
3
4
5
6
  AnsiString str1,str2,str3; int pos, kol;
  str1=S1->Text;
  str2=S2->Text;
  str3=str1.SubString(pos,kol);
  str3=str1+str2;
  Res->Text= str3;
Добрый вечер!
Обратите внимание, что вы делаете с str3
В начале вы копируете в нее часть строки str1
C++
1
str3=str1.SubString(pos,kol);
А потом затираете скопированное суммой строк str1 и str2:
C++
1
str3=str1+str2;
В итоге вам программа выдаете не то что вы хотели бы.
И я не увидел в коде, чтобы вы присваивали значения переменным pos и kol
Попробуйте так:

C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button6Click(TObject *Sender)
{
  AnsiString str1,str2,str3; 
  int pos = 2, kol = 2;
  str1=S1->Text;
  str2=S2->Text;
  str3=str1.SubString(pos,kol);
  Res->Text= str3;
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.04.2012, 21:35
Цитата Сообщение от ruslove Посмотреть сообщение
У меня с детства плохо с объяснением, сорри.
строка 1 S1-имеет присвоенное имя 'S1'
строка 2 S2-имеет присвоенное имя 'S2'
строка Начальная позиция Pos -имеет присвоенное имя 'pos'
строка количество,Kol имеет присвоенное имя 'kol'
Не умничайте . S1,S2,S3,S4 - это компоненты типа TEdit ?
0
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 6
04.04.2012, 21:39  [ТС]
Да это компоненты типа TEdit ?
Только нет у меня значений с именем S3,S4

Добавлено через 1 минуту
не работает.
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
04.04.2012, 21:41
ruslove, прочтите Архангельского.
0
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 6
04.04.2012, 21:42  [ТС]
Читал я Архангельского 980 страница, не нашел там ничего, чтобы у меня заработало.
В данном коде просто где то косяк с переменными или со знаками, и я в упор не понимаю где
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.04.2012, 21:44
Цитата Сообщение от ruslove Посмотреть сообщение
Только нет у меня значений с именем S3,S4
Да я их особо не считал.
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
04.04.2012, 21:53
Цитата Сообщение от ruslove Посмотреть сообщение
Читал я Архангельского 980 страница
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str, sub_str;
  int a, b;
 
  str = Edit1->Text;
  a   = Edit3->Text.ToInt();
  b   = Edit4->Text.ToInt();
 
  sub_str = str.SubString(a, b);
 
  Edit2->Text = sub_str;
 
}
//---------------------------------------------------------------------------
Миниатюры
Копирование подстроки в строку  
Вложения
Тип файла: rar Новая папка (15).rar (334.9 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 6
04.04.2012, 22:42  [ТС]
Цитата Сообщение от QVO Посмотреть сообщение
C++
1
2
3
4
5
6
  AnsiString str1,str2,str3; int pos, kol;
  str1=S1->Text;
  str2=S2->Text;
  str3=str1.SubString(pos,kol);
  str3=str1+str2;
  Res->Text= str3;
Добрый вечер!
Обратите внимание, что вы делаете с str3
В начале вы копируете в нее часть строки str1
C++
1
str3=str1.SubString(pos,kol);
А потом затираете скопированное суммой строк str1 и str2:
C++
1
str3=str1+str2;
В итоге вам программа выдаете не то что вы хотели бы.
И я не увидел в коде, чтобы вы присваивали значения переменным pos и kol
Попробуйте так:
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button6Click(TObject *Sender)
{
  AnsiString str1,str2,str3; 
  int pos = 2, kol = 2;
  str1=S1->Text;
  str2=S2->Text;
  str3=str1.SubString(pos,kol);
  Res->Text= str3;
}
Вот это действительно похоже на правду и работает.
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button6Click(TObject *Sender)
{
  AnsiString str1,str2,str3; 
  int pos = 2, kol = 2/*Эти значения мне нужно набирать на клавиатуре в окне программы*/;
  str1=S1->Text;
  str2=S2->Text;
  str3=str1.SubString(pos,kol);
  Res->Text= str3;
}
Только мне нужно вводить значения pos и kol c клавиатуры,
и чтобы соответствующее оставшиеся значения введенных в S1 и S2 выводилось в окно Res
Допустим строка S1, ввожу: АБВГ
строка S2, ввожу ДЕЖЗ
В строке начальная позиция ввожу: 2
В строке Количество kol ввожу: 3
Вывод результата: АБДЕЖВГ

Добавлено через 14 минут
Цитата Сообщение от QVO Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str, sub_str;
  int a, b;
 
  str = Edit1->Text;
  a   = Edit3->Text.ToInt();
  b   = Edit4->Text.ToInt();
 
  sub_str = str.SubString(a, b);
 
  Edit2->Text = sub_str;
 
}
//---------------------------------------------------------------------------
Класс, супер, ВЫ молодец.
А как сделать так, чтобы введя значение 1 и значение 2, т.е, с какой позиции начать и сколько букв вставить.
Значит я ввожу буквы в первое поле"строка с которой будем вырезать"
Я ввожу во второе поле "подстрока"
Ввожу в поле "с какой буквы вырезать" свои значения
Ввожу в поле "количество вырезанных букв" свои значения
и у меня должно быть еще одно текстовое поле типа TEdit(это я понимаю как сделать)в которое выводится начальная позиция символа который я указал в поле"с какой буквы вырезать"и количество вырезанных букв с подстроки.Затем это все объединяется и выводится в поле TEdit

Добавлено через 16 минут
Цитата Сообщение от QVO Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str, sub_str;
  int a, b;
 
  str = Edit1->Text;
  a   = Edit3->Text.ToInt();
  b   = Edit4->Text.ToInt();
 
  sub_str = str.SubString(a, b);
 
  Edit2->Text = sub_str;
 
}
//---------------------------------------------------------------------------
Кажется по чуть чуть я начинаю доходить до истины!
Это гениально, четыре строчки кода.
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
04.04.2012, 23:00
Цитата Сообщение от ruslove Посмотреть сообщение
Допустим строка S1, ввожу: АБВГ
строка S2, ввожу ДЕЖЗ
В строке начальная позиция ввожу: 2
В строке Количество kol ввожу: 3
Вывод результата: АБДЕЖВГ
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString S1 = Edit1->Text;
  AnsiString S2 = Edit2->Text;
  int pos = StrToInt(Edit3->Text);
  int kol = StrToInt(Edit4->Text);
  Edit5->Text = S1.Insert(S2.SetLength(kol), pos);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2012, 23:00
Помогаю со студенческими работами здесь

Разбить исходную строку на 2 подстроки
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Разбить исходную строку на 2 подстроки, причём первая...

Прочитать строку посимвольно и извлечь подстроки
Здравствуйте! Мне надо прокрутить строку (которая в Edit) по символам и каждый символ записывать в i-й элемент массива char, до того...

Разбить исходную строку на две подстроки
Дана строка, состоящая из слов, разделенных пробелами. Разбить исходную строку на две подстроки, причем первая длиной k символов, если на...

Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку
Выполнить поиск подстроки внутри данной строки,замену найденной подстроки на другую строку Пример Исходная строка: aaaabbbaaa ...

Разбить строку на все "связные" подстроки. Получившиеся подстроки записать в вектор
Нужно разбить минимальную строку на "связные" подстроки Например: строка Mas: "qwe" нужны подстроки:...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru