Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SuperProgramer
-30 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 104
#1

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

14.07.2015, 13:34. Просмотров 1371. Ответов 7
Метки нет (Все метки)

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

Как объединить три char строки одну? - C++
Мне конечно говорили, что c++ не прост в постижение, но не настолько же... У меня банальная проблема, которую наверное не 1 раз...

Соединить две строки в одну - C++
А если пример таков: include <iostream> inclide <string.h> include<stdio.h> int main() char perl1, perl2, perl; { ...

Объединить три строки в одну и вывести на экран - C++
Помогите пожалуйста решить 3. Объединить три строки в одну и вывести на экран.

Напишите программу, которая соединит три строки в одну таким образом, что... - C++
Заданы три строки длиной по 11 символов. Напишите программу, которая соединит три строки в одну таким образом, что в первую очередь будет...

Как присоединить одну строку к другой типа const char * - C++
Создаю группу файло, передаю путь. Нужно соединить строки. const char *path="C:\\Program Files\\Microsoft Visual...

Соединить в одну строку части из двух. - C++
Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку, содержащую первые N1 символов строки S1 и...

7
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
14.07.2015, 13:39 #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);
0
nmcf
6198 / 5509 / 1929
Регистрация: 14.04.2014
Сообщений: 23,131
14.07.2015, 13:40 #3
Делаешь вложенный вызов strcat().
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 702
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
14.07.2015, 13:41 #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);
2
Max Dark
шКодер самоучка
1873 / 1673 / 607
Регистрация: 09.10.2013
Сообщений: 3,718
Записей в блоге: 6
Завершенные тесты: 2
14.07.2015, 13:42 #5
C++
1
2
char result[1024];
sprintf(result, "Документ `%s` был открыт", OpenDialog1->FileName);
sprintf
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 702
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
14.07.2015, 13:54 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
SuperProgramer, более короткая запись
C++
1
2
char *String4 = new char[strlen(String1) + strlen(String2) + strlen(String3) + 1];
strcat(strcat(strcpy(String4, String1), String2), String3);
1
SuperProgramer
-30 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 104
14.07.2015, 17:49  [ТС] #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);
Спасибо это помогло больше всех!
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
15.07.2015, 09:21 #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, т.к. на каждом вызове приходится по-новой искать (линейно) конец временной строки.
0
15.07.2015, 09:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2015, 09:21
Привет! Вот еще темы с ответами:

Нужно соединить две функции в одну - C++
Моя проблема: есть две функции для подсчета числителя и знаменателя их нужно соединить в одну, что бы она могла подсчитывать и числитель и...

Одну строку инициализировать в программе, другую - ввести с клавиатуры; соединить их содержимое - C++
Здравствуйте, помогите пожалуйста с такой задачкой, не могу разобраться как её решить. Одну строку инициализировать в программе,...

Различное поведение функции которая копирует строки с char* t и char t[] - C++
столкнулся с ситуацией которую не могу объяснить пишем функцию которая копирует одну строку в другую: void strstr(char* t,...

Строка: чем отличается строки string, char, char*? - C++
Помогите разобраться,совсем плохо идёт,чем отличается строки string,char,char* И если можно пару примеров Буду весьма признательна


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru