Форум программистов, компьютерный форум CyberForum.ru

Как соединить три строки char в одну? - C++

Восстановить пароль Регистрация
 
SuperProgramer
-30 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 104
14.07.2015, 13:34     Как соединить три строки char в одну? #1
Должно было получиться к примеру Документ 1.txt был открыт.Не вышло.
C++
1
2
3
4
char* String1="Документ ";
char* String2=OpenDialog1->FileName;
char* String3=" был открыт";
char* ResultString=String1+String2+String3;
Так не работает,а StrCat соединяет только две
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2015, 13:34     Как соединить три строки char в одну?
Посмотрите здесь:

C++ Как присоединить одну строку к другой типа const char *
Напишите программу, которая соединит три строки в одну таким образом, что... C++
Нужно соединить две функции в одну C++
Объединить три строки в одну и вывести на экран C++
C++ Одну строку инициализировать в программе, другую - ввести с клавиатуры; соединить их содержимое
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
14.07.2015, 13:39     Как соединить три строки char в одну? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Лучше бы использовать string. Но можно и через strcat.
C++
1
2
3
4
char* ResultString = new char[strlen(String1) + strlen(String2) + strlen(String3) + 1];
strcpy(ResultString, String1);
strcat(ResultString, String2);
strcat(ResultString, String3);
nmcf
4281 / 3712 / 1247
Регистрация: 14.04.2014
Сообщений: 14,516
14.07.2015, 13:40     Как соединить три строки char в одну? #3
Делаешь вложенный вызов strcat().
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 575
Регистрация: 14.05.2014
Сообщений: 4,740
Записей в блоге: 1
Завершенные тесты: 5
14.07.2015, 13:41     Как соединить три строки char в одну? #4
SuperProgramer,
C++
1
2
3
4
char *String4 = new char[strlen(String1) + strlen(String2) + strlen(String3) + 1];
strcpy(String4, String1);
strcat(String4, String2);
strcat(String4, String3);
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
14.07.2015, 13:42     Как соединить три строки char в одну? #5
C++
1
2
char result[1024];
sprintf(result, "Документ `%s` был открыт", OpenDialog1->FileName);
sprintf
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 575
Регистрация: 14.05.2014
Сообщений: 4,740
Записей в блоге: 1
Завершенные тесты: 5
14.07.2015, 13:54     Как соединить три строки char в одну? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
SuperProgramer, более короткая запись
C++
1
2
char *String4 = new char[strlen(String1) + strlen(String2) + strlen(String3) + 1];
strcat(strcat(strcpy(String4, String1), String2), String3);
SuperProgramer
-30 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 104
14.07.2015, 17:49  [ТС]     Как соединить три строки char в одну? #7
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
SuperProgramer, более короткая запись
C++
1
2
char *String4 = new char[strlen(String1) + strlen(String2) + strlen(String3) + 1];
strcat(strcat(strcpy(String4, String1), String2), String3);
Спасибо это помогло больше всех!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2015, 09:21     Как соединить три строки char в одну?
Еще ссылки по теме:

C++ Соединить две строки в одну
C++ Различное поведение функции которая копирует строки с char* t и char t[]
C++ Соединить в одну строку части из двух.

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
15.07.2015, 09:21     Как соединить три строки char в одну? #8
SuperProgramer, просто не надо использовать char* там, где проще и правильнее использовать std::string.
Непосредственная работа с char* это сишный уровень, а не плюсовый.
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
strcpy(ResultString, String1); 
strcat(ResultString, String2);
Вспоминаю свой старый сишный код подобного рода и ловлю багов, когда вдруг возникала необходимость либо поменять порядок конкатенации строк, либо убрать/добавить строки. strcpy() уползал куда-то в середину (не без помощи копипасты, конечно) или вовсе удалялся незаметно, а в начало попадал strcat(). На отладочных версиях было всё тип-топ, т.к. память инициализировалась нулями, а в релизе - сюрпризы. После этого стал явно инициализировать данные итоговой строки примерно так:
C++
1
*String4 = 0;
После этого первый strcat работал эквивалентно strcpy, и strcpy не было смысла использовать вообще в этой схеме.
Т.о. менять местами строки (путем копипасты) можно было уже безболезненно.

Кстати, можно ещё напомнить о неэффективности конкатенации путем последовательных вызовов strcat, т.к. на каждом вызове приходится по-новой искать (линейно) конец временной строки.
Yandex
Объявления
15.07.2015, 09:21     Как соединить три строки char в одну?
Ответ Создать тему
Опции темы

Текущее время: 12:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru