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

Наследование\строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс наследуемый от двух базовых классов http://www.cyberforum.ru/cpp-beginners/thread314039.html
Друзья Являеться ли класс (А)- Классом наследуемым от двух базовых классов? Если не правильно то как нужно написать ?.Помогите врозумить ситуацию. class A :public B:public C { }; class B { };...
C++ Формирование предложений. Здравствуйте. Дан массив слов. Сформировать предложения из слов, в которых первые k букв совпадают. В результате – массив предложений. Выполнить, используя функции библиотеки <string.h>.... http://www.cyberforum.ru/cpp-beginners/thread314038.html
C++ Mасив turbo С++
Вычислить сумму и количество четных элементов одномерного массива, и записать в строковую переменную последовательно нечетные элементы. Количество элементов массива должен задавать пользователь....
Запись символов CR и LF в COM порт C++
Ребят, как записать в COM порт символы возврата каретки и переноса сроки CR и LF? При попытке записи посредствам команды WriteFile, каждый символ транслируется в HEX, всё бы ничего, но символы CR и...
C++ Обработка строк и работа с файлами... http://www.cyberforum.ru/cpp-beginners/thread314003.html
Работа с обработкой строк и работу с файлами средствами языка Си. Исходный текст должен содержаться в одном файле, результат — во втором файле. Читая файл посимвольно, перевести каждый символ...
C++ Из списка студентов на экран вывести данные о тех, кто учится в группе 664, проживает в общежитии, но родился в городе Ижевске Утро доброе! Подскажите пжста! Из списка студентов на экран вывести данные о тех, кто учится в группе 664, проживает в общежитии, но родился в городе Ижевске. Исходные данные и результат должно... подробнее

Показать сообщение отдельно
AlexP11223
52 / 53 / 8
Регистрация: 20.04.2011
Сообщений: 339

Наследование\строки - C++

06.06.2011, 11:10. Просмотров 424. Ответов 5
Метки (Все метки)

задание
В некоторых компьютерных языках, таких, как Visual Basic, есть опера-
ции, с помощью которых можно выделить часть строки и присвоить ее
другой строке. (В стандартном классе string предложены различные под-
ходы.) Используя наследование, добавьте такую возможность в класс
Pstring из упражнения 2. В новом производном классе Pstring2 разместите
три новых функции: left(), mid() и right().
C++
1
2
3
4
5
6
s2.1eft ( s1, n ) // в строку s2 помещаются n саных левых
// символов строки sl
s2.mid ( s1, s, n ) // в строку s2 понещаются n символов из строки
// начиная с сиивола номер s
s2.right ( s1, n ) // в строку s2 помещаются n самых правых
// символов строки s1
Вы можете использовать цикл for для копирования символ за символом
подходящих частей строки s1 во временный объект класса Pstring2, который затем их возвратит. Для получения лучшего результата используйте
в этих функциях возврат по ссылке, чтобы они могли быть использованы
с левой стороны знака «равно» для изменения части существующей строки.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
class Pstring :public String
{
public:
    Pstring()                  
    {}
    Pstring(char s[]) 
    {
        
        if (strlen(s) > SZ-1)
        {
            int j;
            for (j=0; j<SZ-1; j++)
                str[j]=s[j];
            str[j]='\0';
        }
 
        else
            strcpy(str, s);
 
    }
};
 
class Pstring2 :public Pstring
{
public:
    Pstring2() : Pstring()
    {}
    Pstring2(char s[]) : Pstring(s)
    {}
 
    Pstring2& left(Pstring2 s2, int n)
    {
        Pstring2 s1;
        for(int i=0; i<=n; i++)
            str[i] = s2[i];
         return s1;
    }
 
    Pstring2& mid(Pstring2 s2, int s, int n)
    {
        Pstring2 s1;
        for(int i=s, j=0; j<=n; i++, j++)
            s1[j] = s2[i];
        return s1;
    }
 
    Pstring2& right(Pstring2 s2, int n)
    {
        Pstring2 s1;
        for(int i=strlen(s2.str), j=0; j<=n; i--, j++)
            str[j] = s2[i];
        return s1;
    }
};
 
int main()
   {
      Pstring2 str1, s1;
      s1 = "It's just a boring test string.";
      str1.left(s1, 5);
      str1.display();
      str1.mid(s1, 10, 5);
      str1.display();
      str1.right(s1, 10);
      str1.display();
     
      
 
   return 0;
   }
Почему такой вывод?

Не очень понимаю как реализовать подчеркнутую часть задания. Как можно использовать это с левой стороны от = ?оО особенно "для изменения части существующей строки" непонятно, выше же написано, что функция и так помещает эту строку в s2? Или что за "существующую строка"?

И как я понимаю, кроме возвращения переменной (вроде бы это я сделал?), строка должна присваиваться той строке, из которой вызвана (str1 в данном случае). Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.