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

Задачка. Функция Concat - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Использование библиотеки <stdio.h> http://www.cyberforum.ru/cpp-beginners/thread657662.html
Когда барон Мюнхаузен решил пообедать, он привязал к длинной веревки кусок сала и забросил его в воздух. Стая диких гусей пролетала тем временем над домом барона, заинтересовалась необычным предметом и гусь, возглавлявший стаю, проглотил его. Не успел он насладиться ощущением сытости, как кусок сала проскочил через него и скрылся в клюве второго гуся и т.д. Теперь судьба обеда барона Мюнхаузена...
C++ Ключевое слово export В стандарте C++ встречается ключевое слово export, если кому-то приходилось реально использовать его в коде, то приведите пожалуйста пример и компиляторы, которые его поддерживают. Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread657650.html
Наследование и шаблоны C++
Не понимаю почему выдается ошибки, переменные а, b не объявлены в данном контексте (внутри функции f) Сейчас почитал прату, и страуструпа, и не нашел объяснений template <typename T> class A { public: int a; int b;
C++ В прямоугольной матрице NxK переставить столбцы в обратном порядке
проверьте прогу плз - В прямоугольной матрице NxK переставить столбцы в обратном порядке #include<stdio.h> #define N 3 #define K 8 int main(){ int mas={}; int mas t={0}; int i,j,s,t=0; for (i=0;i<K;i++)
C++ Определить количество байтов, которые занимают в памяти переменные данных типов http://www.cyberforum.ru/cpp-beginners/thread657631.html
Здравствуйте. Помогите пожалуйста с лабораторной... В языке С++ полный ноль, ничего не понимаю. Вот сами задания из лабы: 1. Опишите переменные всех типов, приведенных в таблице 2. Определите количество байтов, которые занимают в памяти переменные этих типов. Результат выведите на экран в виде sizeof (int)=2 sizeof (long)=4… Заранее спасибо за помощь.))
C++ Указатели в массиве В книжке нет описания к данному коду и мне немного не понятно в некоторых моментах: 1). while (*p) { (не понятно какое условие понимается под *p) 2). while(*p!=' ' && *p) { (*p!= ' ' - это понятно, что если будет пробел, а вот && *p - это что за условие?) Ответьте пожалуйста на мои вопросы и напишите краткое описание того, как работает программа, у меня в голове немного не укладывается что заем... подробнее

Показать сообщение отдельно
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
25.09.2012, 13:19     Задачка. Функция Concat
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <algorithm>
#include <iostream>
#include <string.h>
 
char* concat(const char* frst, size_t szFrst, const char* scnd, size_t szScnd)
{
    size_t totalSize = szFrst + szScnd + 1;
    char *p = new char[totalSize];
    std::copy(frst, frst + szFrst, p);
    std::copy(scnd, scnd + szScnd, p + szFrst);
    p[totalSize - 1] = '\0';
    return p;
}
 
int main()
{
    const size_t MAX_INPUT_SZ = 256;
    char str1[256] = {0};
    char str2[256] = {0};
    std::cout<<"Enter first string:\n";
    std::cin.getline(str1, MAX_INPUT_SZ);
    std::cout<<"Enter second string:\n";
    std::cin.getline(str2, MAX_INPUT_SZ);
    char *p3 = concat(str1, strlen(str1), str2, strlen(str2));
    std::cout<<p3<<std::endl;
    delete [] p3;
}
Добавлено через 13 минут
Лучше так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <algorithm>
#include <iostream>
#include <string.h>
 
void concat(const char* frst, size_t szFrst, const char* scnd, size_t szScnd, char* dest, size_t szDest)
{
    if (!frst || !scnd || !dest)
    {
        dest = NULL;
        return;
    }
    if (szDest < szFrst)
    {
        std::copy(frst, frst + szDest, dest);
        return;
    }
    std::copy(frst, frst + szFrst, dest);
    if ((szDest - szFrst) < szScnd)
    {
        std::copy(scnd, scnd + szDest - szFrst, dest + szFrst);
        return;
    }
    std::copy(scnd, scnd + szScnd, dest + szFrst);
    dest[szFrst + szScnd - 1] = '\0';
}
 
int main()
{
    const size_t MAX_INPUT_SZ = 256;
    char str1[256] = {0};
    char str2[256] = {0};
    char destination[MAX_INPUT_SZ * 2] = {0};
    std::cout<<"Enter first string:\n";
    std::cin.getline(str1, MAX_INPUT_SZ);
    std::cout<<"Enter second string:\n";
    std::cin.getline(str2, MAX_INPUT_SZ);
    concat(str1, strlen(str1), str2, strlen(str2), destination, MAX_INPUT_SZ * 2);
    std::cout<<destination<<std::endl;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru