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

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

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

Показать сообщение отдельно
AlexP11223
36 / 37 / 4
Регистрация: 20.04.2011
Сообщений: 288
06.06.2011, 11:10     Наследование\строки
задание
В некоторых компьютерных языках, таких, как 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;
   }
Почему такой вывод?
[IMG]http://i22.***********/big/2011/0606/d6/52832a117fce0c82440101cb0e946ad6.jpg[/IMG]
Не очень понимаю как реализовать подчеркнутую часть задания. Как можно использовать это с левой стороны от = ?оО особенно "для изменения части существующей строки" непонятно, выше же написано, что функция и так помещает эту строку в s2? Или что за "существующую строка"?

И как я понимаю, кроме возвращения переменной (вроде бы это я сделал?), строка должна присваиваться той строке, из которой вызвана (str1 в данном случае). Как это сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru