Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> присоединить строки const char* 
:(
    Опции темы
Mormishka
Дата 6.4.2011, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 25.8.2010

Репутация: нет
Всего: нет



Как сложить две строки const char* ?
PM MAIL   Вверх
mes
Дата 6.4.2011, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



на С ? выделить достаточно памяти, скопировать в нее первую строку, затем вторую и не забыть про \0..



--------------------
PM MAIL WWW   Вверх
Addidas
Дата 6.4.2011, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 20.8.2007

Репутация: нет
Всего: нет



Цитата(mes @ 6.4.2011,  19:01)
на С ? выделить достаточно памяти, скопировать в нее первую строку, затем вторую и не забыть про \0..

надо только не забыть подпись в конце - КО или кэп
PM MAIL   Вверх
borisbn
Дата 7.4.2011, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



При условии, что память под первую строку больше, чем суммарная длина, так
Код
strcat( str1, str2 );

а лучше всего так
Код
std::string std_str1( str1 );
std::string std_str2( str2 );
std::string result = std_str1 + std_str2;



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Trotter
Дата 7.4.2011, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.10.2006
Где: Нижний Новгород

Репутация: нет
Всего: 0



borisbn, а можно полный код, а то не понятно откуда в скобках что взялось )
PM MAIL ICQ   Вверх
borisbn
Дата 7.4.2011, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



"полный" код
Код

char str1[ 200 ] = { "Hello " };
char str2[ 100 ] = { "world" };
printf( "str1 = %s str2 = %s\n", str1, str2 );
strcat( str1, str2 );
printf( "str1 + str2 = %s\n", str1 );

или более правильно
Код

char str1[ 200 ] = { "Hello " };
char str2[ 100 ] = { "world" };
std::string std_str1( str1 );
std::string std_str2( str2 );
std::string result = std_str1 + std_str2;
printf( "str1 = %s str2 = %s str1 + str2 = %s\n", str1, str2, result.c_str() );



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Trotter
Дата 7.4.2011, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.10.2006
Где: Нижний Новгород

Репутация: нет
Всего: 0



borisbn, воо, пасиб, я конечно догадывался то что так, но лучше перепроверить )
PM MAIL ICQ   Вверх
bsa
Дата 8.4.2011, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Только не забываем, что у ТС обе строки const char *, а не char[].  smile 
PM   Вверх
borisbn
Дата 8.4.2011, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(bsa @  8.4.2011,  15:10 Найти цитируемый пост)
Только не забываем, что у ТС обе строки const char *, а не char[]

ну, тогда так
Код

void addToConstChars( const char * str1, const char * str2, const char * & result )
{
    result = new char[ strlen( str1 ) + strlen( str2 ) + 1 ];
    strcpy( result, str1 );
    strcat( result, str2 );
}



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
mes
Дата 8.4.2011, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(borisbn @  8.4.2011,  14:17 Найти цитируемый пост)
ну, тогда так

ну если подправляли свой пример, то зря добавили  new и функцию  ...


--------------------
PM MAIL WWW   Вверх
volatile
Дата 8.4.2011, 23:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(borisbn @  8.4.2011,  15:17 Найти цитируемый пост)
void addToConstChars( const char * str1, const char * str2, const char * & result )
{
    result = new char[ strlen( str1 ) + strlen( str2 ) + 1 ];
    strcpy( result, str1 );
    strcat( result, str2 );
}

Щас буду придираться smile 
  • Как вы копируете в константную строку? имхо, не должно скомпилится.
  • Кроме того потенциальая утечка ресурсов. (если пользователь передал result не пустой )
  • Кроме того strcat пробегает первую строчку в поисках её конца, хотя у нас есть уже ее длина. (производительность.)

PM MAIL   Вверх
borisbn
Дата 9.4.2011, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



volatile, знаете, как в деревнях делают соленья/сыр/самогонку ? Есть для себя, а есть на продажу.
Вот тут также smile

И потом, я же предупреждал:
Цитата(borisbn @  7.4.2011,  06:24 Найти цитируемый пост)
а лучше всего так

Цитата(borisbn @  7.4.2011,  10:04 Найти цитируемый пост)
или более правильно


volatile, что-то у Вас настроение критическое - то "пропуск" не устраивает ("пробел" правильнее), то "хотя у нас есть уже ее длина. (производительность.)" smile

P.S. На чистом, правильном олбанском Щаз пишется через з smile

Это сообщение отредактировал(а) borisbn - 9.4.2011, 18:37


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
volatile
Дата 9.4.2011, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



borisbn, да нормально всё. я сам и похлеще пишу, не дай бог кто увидит  smile 

без обид! smile 

Цитата(borisbn @  9.4.2011,  12:34 Найти цитируемый пост)
Щаз пишется через з

о спасибо, буду знать. smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.