powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите склеить две строки
25 сообщений из 26, страница 1 из 2
помогите склеить две строки
    #39028658
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет!

помогите пожалуйста склеить строки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void myfunc() {
char *s1;
char *s2;
char *s3;

s1 = "s1";
s2 = "s2";

s3 = "bla bla"+s1+s2;

}
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028681
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поменяй "char*" на "AnsiString".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028713
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

для AnsiString нужно подключать vcl.h, можно без этого как то обойтись ?
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028728
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinдля AnsiString нужно подключать vcl.h, можно без этого как то обойтись ?
Можно подключить <strings> и делать то же с std::string.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028773
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

в что будет работать быстрее,

Код: plaintext
1.
2.
 sprintf(TmpStr,"%s%s%s","UID=",UserName,";");
 strcat(ConStr,TmpStr);



или AnsiString + AnsiString

?
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028831
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin,

Быстрее будет работать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void myfunc() {
char *s1;
char *s2;
char *s3;

s1 = "s1";
s2 = "s2";

s3 = "bla bla"+s1+s2;
}



Оно будет вообще очень быстро работать, за O(1).
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028833
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin,

Код: 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.
void __fastcall TForm1::Button1Click(TObject *Sender) {
 AnsiString s1 = "s1";
 AnsiString s2 = "s2";
 AnsiString s3;
 int i = 0;
 int t = GetTickCount();
 while (i < 10000000) {

  s3 = s1 + "_" + s2;
  i++;
 }
 ShowMessage(GetTickCount()-t);
}
// ---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender) {
 char s1[10] = "s1";
 char s2[10] = "s2";
 char *s3 = new char[22];
 int i = 0;
 int t = GetTickCount();
 while (i < 10000000) {
  sprintf(s3, "%s%s%s", s1, "_", s2);
  i++;
 }
 ShowMessage(GetTickCount()-t);

}



результат AnsiString 5117 ms
результат char 1498 ms

я что то сделал не так или Вы посоветовали не самый хороший вариант?
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028836
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivMandarin,

Быстрее будет работать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void myfunc() {
char *s1;
char *s2;
char *s3;

s1 = "s1";
s2 = "s2";

s3 = "bla bla"+s1+s2;
}



Оно будет вообще очень быстро работать, за O(1).

[bcc32 Error] Unit1.cpp(56): E2085 Invalid pointer addition
Full parser context
Unit1.cpp(48): parsing: void _fastcall TForm1::Button3Click(TObject *)
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028850
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin,

А так ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void myfunc() {
char *s1;
char *s2;
char *s3;

s1 = "s1";
s2 = "s2";

s3 = "bla bla"+(int)s1+(int)s2;

}
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028859
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivMandarin,

А так ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void myfunc() {
char *s1;
char *s2;
char *s3;

s1 = "s1";
s2 = "s2";

s3 = "bla bla"+(int)s1+(int)s2;

}



[bcc32 Error] Unit1.cpp(70): E2034 Cannot convert 'const char *' to 'char *'
Full parser context
Unit1.cpp(48): parsing: void _fastcall TForm1::Button3Click(TObject *)
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028861
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinрезультат AnsiString 5117 ms
результат char 1498 ms
strcpy()/strcat() быстрее sprintf() должен работать. Только не забывай память освобождать.
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028877
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

спасибо
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028903
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 char s1[10] = "s1";
 char s2[10] = "s2";
 char *s3;
 int i = 0;
 int t = GetTickCount();
 while (i < 10000000) {
  s3 = "";
  strcat(s3,s1);
  strcat(s3,"_"); // почему на этой строке вываливается ошибка AV ?
  strcat(s3,s2);
  //delete[]s3; как почистить память, вернуть s3 в исходное состояние?
  i++;
 }
 ShowMessage(GetTickCount()-t);
}
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39028948
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin,

Ну прочитай ты учебник в конце концов. Это совсем не сложно.

MasterZiv, кончай издеваться над неучем.
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39029001
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

читаю... если читать учебник и внимать подсказкам с форума, обучение будет быстрее в два раза, я эти круги ада уже проходил когда Delphi учил.
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39029029
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlMandarin,
....

MasterZiv, кончай издеваться над неучем.
Видимо он устал.. =)

Кстати, как выяснилось, сложение строк очень нетривиальная операция. Откуда поехали всякие иммутабли и стрингбилдеры
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39030192
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mandarinвсем привет!

помогите пожалуйста склеить строки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void myfunc() {
char *s1;
char *s2;
char *s3;

s1 = "s1";
s2 = "s2";

s3 = "bla bla"+s1+s2;

}



Я так понимаю это дом задание и ничем пользоваться нельзя,
вам надо написать собственную ф-ию strcat ?
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39030266
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 char s1[10] = "s1";
 char s2[10] = "s2";
 char *s3;
 int i = 0;
 int t = GetTickCount();
 while (i < 10000000) {
  s3 = "";
  strcat(s3,s1);
  strcat(s3,"_"); // почему на этой строке вываливается ошибка AV ?
  strcat(s3,s2);
  //delete[]s3; как почистить память, вернуть s3 в исходное состояние?
  i++;
 }
 ShowMessage(GetTickCount()-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.
25.
26.
27.
28.
void __fastcall TForm1::Button4Click(
 TObject  *Sender
) {

 char  s1[ 10 ] = "s1";
 char  s2[ 10 ] = "s2";
 char  *s3;

 int   i        = 0;
 int   t        = GetTickCount();

 while ( i < 10000000 ) {

  s3 = "";

  strcat( s3, s1  );
  strcat( s3, "_" );                                       // Почему на этой строке вываливается ошибка AV?
  strcat( s3, s2  );
  
  i++;                                                     // delete[] s3; как почистить память, вернуть s3 в исходное состояние?

 }                                                         // while ( i < 10000000 ) {

 ShowMessage( 
  GetTickCount() - t 
 );

}                                                          // void __fastcall TForm1::Button4Click(
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39030270
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет все же у меня "норма" - следующий стиль оформления кода

Код: 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.
void __fastcall TForm1::Button4Click(
 TObject  *Sender
) {
                                                           //
 char  s1[ 10 ] = "s1";                                    //
 char  s2[ 10 ] = "s2";                                    //
 char  *s3;

 int   i        = 0;                                       //
 int   t        = GetTickCount();                          //

// ----------------
//
 while ( i < 10000000 ) {

  s3 = "";

  strcat( s3, s1  );
  strcat( s3, "_" );                                       // Почему на этой строке вываливается ошибка AV?
  strcat( s3, s2  );
  
  i++;                                                     // delete[] s3; как почистить память, вернуть s3 в исходное состояние?

 }                                                         // while ( i < 10000000 ) {

 ShowMessage( 
  GetTickCount() - t 
 );

}                                                          // void __fastcall TForm1::Button4Click(
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39030389
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin
Код: plaintext
1.
2.
3.
  s3 = "";
  strcat(s3,s1);  // Странно что тут ошибки нет
  strcat(s3,"_"); // почему на этой строке вываливается ошибка AV ?


иди книжки читай, или бросай это грязное дело.
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39030404
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знавал я минимум 2 челов которые засыпавшись на ASCIZ строках и играх с указателями
оставили программирование и мирно занимаются торговлей комплектующими. Мдя...
Вот в таком вот аспекте...
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39030572
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39035184
Jurijus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mandarin,
Вот быстро и кота или string не надо.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <iostream>
using namespace std;
int main()
{
char s1[5]="abcd";
char a1[2]="a",b1[2]="b",
c1[2]="c",d1[2]="d";
s1[0]=a1[0];
s1[1]=b1[0];
s1[2]=c1[0];
s1[3]=d1[0];
cout<<s1<<endl;
system("pause"); 
]return 0;
}
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39035194
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jurijus, пользуйся предварительным просмотром или подфорумом
Тест для проверки дизайна исходника. Дублей делать не надо.
...
Рейтинг: 0 / 0
помогите склеить две строки
    #39035199
Jurijus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <iostream>
using namespace std;
int main()
{
int i;
char s1[99999];
char a1[2]="a";
for(i=0;i<100000; i++)
{
s1[i]=a1[0];
}
cout<<s1<<endl;
system("pause"); 
return 0;
}
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите склеить две строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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