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

конкатенация 2х строк? подскажите новичку в с++ - C++

Восстановить пароль Регистрация
 
Oleksa
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 8
03.12.2012, 22:39     конкатенация 2х строк? подскажите новичку в с++ #1
Как получить строку s, являющую собой конкатенацию двух строк s0 и s1?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 22:39     конкатенация 2х строк? подскажите новичку в с++
Посмотрите здесь:

C++ Конкатенация строк
C++ конкатенация строк
Конкатенация строк C++
конкатенация строк C++
Конкатенация строк C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
(SkyNet)
 Аватар для (SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
03.12.2012, 22:45     конкатенация 2х строк? подскажите новичку в с++ #2
C++
1
2
3
4
5
6
7
8
9
10
#include <cstring>
 
int main()
{
   char * s0 = "C", s1 = "++", s;
   strcat(s, s0);
   strcat(s, s1);
 
  return 0;
}
В интернете куча примеров:
http://www.cplusplus.com/reference/cstring/strcat/
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
03.12.2012, 22:52     конкатенация 2х строк? подскажите новичку в с++ #3
(SkyNet), в случайный участок памяти же пишите (я про s).
(SkyNet)
 Аватар для (SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
03.12.2012, 23:00     конкатенация 2х строк? подскажите новичку в с++ #4
gray_fox, а разве в функции нет динамического выделения памяти, или надо так (Не проверял)

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstring>
 
int main()
{
   char * s0 = "C", s1 = "++", s;
   s = new char[strlen(s0) + strlen(s1)+1];
   strcat(s, s0);
   strcat(s, s1);
 
  delete [] s;
  return 0;
}
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
03.12.2012, 23:09     конкатенация 2х строк? подскажите новичку в с++ #5
Цитата Сообщение от (SkyNet) Посмотреть сообщение
char * s0 = "C", s1 = "++", s;
поэтому переменные лучше объявлять на отдельных строках
* относится только к s0, а s1 и s имеют тип char
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
03.12.2012, 23:16     конкатенация 2х строк? подскажите новичку в с++ #6
(SkyNet), все равно не правильно(смысла нет). Да и тут имеется ввиду контейнер std::string.
(SkyNet)
 Аватар для (SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
03.12.2012, 23:16     конкатенация 2х строк? подскажите новичку в с++ #7
ZoRT, спасибо, а то я написал неправильно получаетса.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstring>
 
int main()
{
   char* s0 = "C"; 
   char* s1 = "++";
   char* s;
 
   strcat(s, s0);
   strcat(s, s1);
 
  return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
03.12.2012, 23:18     конкатенация 2х строк? подскажите новичку в с++ #8
Цитата Сообщение от gray_fox Посмотреть сообщение
в случайный участок памяти же пишите (я про s).
Даже и не скомпилится.
(SkyNet)
 Аватар для (SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
03.12.2012, 23:18     конкатенация 2х строк? подскажите новичку в с++ #9
go, да я сам ими пользуюсь уже не помню Си строки
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
03.12.2012, 23:19     конкатенация 2х строк? подскажите новичку в с++ #10
Цитата Сообщение от (SkyNet) Посмотреть сообщение
спасибо, а то я написал неправильно получаетса.
ну не правильно.
(SkyNet)
 Аватар для (SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
03.12.2012, 23:31     конкатенация 2х строк? подскажите новичку в с++ #11
Цитата Сообщение от go Посмотреть сообщение
Даже и не скомпилится.
Вот называетса не проверил, думал очень просто

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstring>
#include <iostream.h>
 
int main()
{
   char s0[] = "C";
   char s1[] = "++";
   char s[] = "";
   
   strcat(s0, s1);
   strcat(s, s0);
  
   cout << s << endl;
   cout << s0 << endl;
   return 0;
}
Ну вот так работает, но меняет s0, что не очень желано. Может быть кто то знает как через указатели правильно зделать
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
03.12.2012, 23:40     конкатенация 2х строк? подскажите новичку в с++ #12
C++
1
2
3
4
5
6
const char* s0 = "C";
const char* s1 = "++";
char* s = new char[ strlen( s0 ) + strlen( s1 ) + 1 ];
 
strcpy( s, s0 );
strcat( s, s1 );
Только кому нужны эти C-строки, когда есть нормальный std::string. Именно им надо пользоваться в C++.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
03.12.2012, 23:42     конкатенация 2х строк? подскажите новичку в с++ #13
Цитата Сообщение от (SkyNet) Посмотреть сообщение
Ну вот так работает,
Не правильно.
Venzo
04.12.2012, 20:53
  #14

Не по теме:

Цитата Сообщение от Герц Посмотреть сообщение
Только кому нужны эти C-строки, когда есть нормальный std::string. Именно им надо пользоваться в C++.
преподам

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2012, 21:01     конкатенация 2х строк? подскажите новичку в с++
Еще ссылки по теме:

Конкатенация строк C++
C++ Конкатенация строк
C++ Конкатенация строк

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11813 / 6792 / 769
Регистрация: 27.09.2012
Сообщений: 16,858
Записей в блоге: 2
Завершенные тесты: 1
04.12.2012, 21:01     конкатенация 2х строк? подскажите новичку в с++ #15
Цитата Сообщение от (SkyNet) Посмотреть сообщение
Ну вот так работает, но меняет s0, что не очень желано.
Так не будет работать.

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Герц Посмотреть сообщение
Только кому нужны эти C-строки, когда есть нормальный std::string. Именно им надо пользоваться в C++.
и вырасти не знающим ничего пингвином, имхо!

Yandex
Объявления
04.12.2012, 21:01     конкатенация 2х строк? подскажите новичку в с++
Ответ Создать тему
Опции темы

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