Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
 Аватар для Fanera
12 / 11 / 6
Регистрация: 05.10.2013
Сообщений: 219

Сложение двух динамических массивов char* в одну строку

10.12.2014, 21:28. Показов 5360. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В массивы вводятся данные, масcивы вида :
C++
1
2
3
4
int n,k;
char *a,*b;
   a=new char[n];
   b=new char[k];
Как вывести результирующую строку БЕЗ подключения библиотеки работы со строками
есть толкьо одна # include <iostream>
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.12.2014, 21:28
Ответы с готовыми решениями:

Сложение массива типа char в одну переменную
Здравствуйте, уважаемые форумчани, помогите разобраться с такой простой задачей. Есть массив char Arr={'1','a','3','b','5','c'}....

Слияние двух динамических массивов…
Приветствую Вас!:) Задача такая: Даны два массива: A и B (числовые), упорядоченные по неубыванию. Слить их в один упорядоченный...

Объединение двух динамических массивов
Не могу соединить два динамических массива в один большой (под катом описание проблемы): cin &gt;&gt; n; int *arr = new int; cout...

7
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
10.12.2014, 21:44
Лучший ответ Сообщение было отмечено Fanera как решение

Решение

C++
1
2
3
4
5
6
7
char* c=new char[n+k];
int j=0;
for(int i=0;a[i];i++)
   c[j++]=a[i];
for(int i=0;b[i];i++)
   c[j++]=b[i];
c[j]=0;
1
 Аватар для Fanera
12 / 11 / 6
Регистрация: 05.10.2013
Сообщений: 219
11.12.2014, 00:05  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
C++
1
c[j]=0;
Поясните, это что то типо "\0" признака конца строки или что то другое?
0
31 / 40 / 6
Регистрация: 04.10.2014
Сообщений: 185
11.12.2014, 00:12
О мышеня прилетел ).
https://ru.wikipedia.org/wiki/... 0%BB%D1%8B
\0 Этот символ ничего не делает. Некоторые терминалы изображают его как пробел, но это неправильно. Часто NULL используют для обозначения конца цепочки символов (например, в языке C).
Добавлено через 36 секунд
Короче указывает что там пусто - нет в Африке капусты )).

Добавлено через 1 минуту
В том что выше написал сверяется с константным числом 0.
0
 Аватар для Fanera
12 / 11 / 6
Регистрация: 05.10.2013
Сообщений: 219
11.12.2014, 00:21  [ТС]
Redee, Так вот чтобы корректно отобразить строку в моем случае массив командой cout << c << endl; так понимаю что последними элементами массива были как раз они "\0" поэтому и интерисуюсь значениями 7 строки
0
31 / 40 / 6
Регистрация: 04.10.2014
Сообщений: 185
11.12.2014, 02:06
C++
1
2
3
4
5
6
char ch[] = "абвг5608";
 
    int m=0;
    while(ch[m] != '\0')
        m++;
    cout << m << endl;
либо >>

C++
1
2
3
4
5
6
char ch[] = "абвг5608";
 
    int m=0;
    while(ch[m] != 0)
        m++;
    cout << m << endl;
Добавлено через 4 минуты
либо еще вот так )) >>
C++
1
2
3
4
5
6
    
char* tXt = "абвгд6089";
int n=0;
while(tXt[n] != '\0')
    n++;
cout << n << endl;
0
 Аватар для Fanera
12 / 11 / 6
Регистрация: 05.10.2013
Сообщений: 219
11.12.2014, 10:25  [ТС]
Redee, Все примеры считают количество символов в строке до "признака" конца строки.
Причем русские буквы считаються не правильно (возможно из за Линукса)
Но как все это поможет вставке признака строки в новый результирующий массив?
0
31 / 40 / 6
Регистрация: 04.10.2014
Сообщений: 185
11.12.2014, 15:40
Вообщето признак строки, это чтобы быть точнее признак перевода строки.
А этот признак включает в себя "\n".
Под форточками "\r\n" но так как "\n" везде есть как этот "признак", то можем считывать без зазрения совести именно "\n".

Впринципе то что дал выше, это счет именно позиций букв.
Стоит заметить что буквы имеют разный размер.

Как раз кое чем похожим занимаюсь, аля борьба с utf-8 и консоль "цмд".
То есть я могу посчитать в этом случае размер общий строки и догадаться сколько занимает буква из разных языков алфавита. А вот сколько занимает именно эта буква НЕ могу узнать (да я не знаю как...).
Допустим в случае с массивом на int у нас все просто и понятно каждая переменная массива занимает 4 байта.
То есть одномерный массив на 2 переменных будет = 8 байтам.
В случае с char / char* дела обстоят куда сложнее.
Так как если мы будем брать sizeof(tXt[n]) то вернем 1 байт согласно спецификации на char.
Но если будем выводить cout << tXt[n] и там "иероглиф" то выведем этот иероглиф.
Но если мы этот иероглиф 1 проверим под кодировкой utf-8 то он будет равняться 3 байтам.
Видимо есть другие НЕ стандартные библиотеки работы с символами Отличными от ASCII символов, так как они занимают именно по 1 байту!
Допустим в utf-8 русские буквы занимают по 2 байта.

Так что надо что то другое для этих задач.
Ладн не парься а то мозг лопнет )).

Вот дополнительный код >>
И да пока не забыл обычные массивы на "пенсию", используем vector-ы + объекты + тупли.
Много где рекомендуют именно векторы место обычных массивов.
И гораздо удобнее оперировать данными в таком массиве.
Если что то низкоуровневое ближе к чистому Си конечно обычные массивы приоритетнее, но если смотрим в сторону будущего и оптимизации разработки то векторы берем за основу полюбому.
Бррр много букв.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
void main()
{
    // файл в кодировке 65001 - UTF-8 без BOM (without signature)
 
    system("chcp 65001");
    char str[] = "дёГт";
    // вывело 9 - по 2 байта на русс символ + 1 байт конечный
    cout << sizeof(str) << endl;
    printf(str);
    cout << endl;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2014, 15:40
Помогаю со студенческими работами здесь

Поочередная загрузка двух динамических массивов
Всем доброго дня. Такая задача: в программе существуют 2 динамических массива. Данные в них загружаются либо с клавиатуры, либо из...

Сложение двух const char
Приветствую. Подскажите, как сложить две const char. char lp; GetModuleFileNameA(GetModuleHandle(NULL), lp, 100); const char...

Иницилизация двух одномерных динамических массивов в классе
Unit1.h(43): E2451 Undefined symbol 'W' выдает такую ошибку, вопрос почему на точно так же объявленный массив P не выдает ошибку, а на...

Вывести уникальные элементы двух динамических массивов
Дано два динамических массива одинаковой размерности. Нужно вывести уникальные элементы. Мой код сравнивает элемент первого массива со...

Заполнение двух динамических массивов случайными вещественными числами
У массивов получаются одинаковые значения, почему? Что посоветуете? #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru