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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
IceSqueez
Java, C# - Expert
67 / 67 / 2
Регистрация: 09.08.2011
Сообщений: 284
#1

Робота с классами и перегрузка функций - C++

06.05.2012, 20:16. Просмотров 413. Ответов 6
Метки нет (Все метки)

Добавить в класс для роботы со строками
o Индикатор что дает возможность обратиться к и-тому символу строки.
o Перегрузку
§ операции унарного + (-): изменяющий строку к строчным (прописным) символов;
§ констант true і false: обращение к экземпляру класса дает значение true, если строка не пустая, а в противном случае false.
§ операции &: возвращает значение true, если строковые поля двоих объектов посимвольно равны (без учета регистра), в противном случае false;
§ Перевод класса-строки в тип string (и на оборот).


Это всё что я смог сделать и то там есть ошибки... Помогите справиться новичку, зарнее спасибо!!!

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// LabaNumber9.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class ryadoc
{
    public:
        char MyString[101];
        int n,m;
        void input()
        {
            cout << "Enter line: " << endl;
            cin.getline(MyString,100);
        };
        void output()
        {
            cout << MyString;
        };
 
        bool blank(char MyString[101])
        {
            if (strlen(MyString)==0)
            {
                return false;
            }
            else
            {
                return true;
            }
        };
 
        bool theSame(char a[],char b[])
        {
            if (strcmp(a,b))
            {
                return true;
            }
            else
                return false;
        }
 
        string toString(char MyString[])
        {
            string a;
            for (int i=0; i>strlen(MyString); i++)
            {
                a+=MyString[i];
            }
            return a;
        }
};
 
int main()
{
    ryadoc a,b;
    a.input();
    a.output();
    if (a.blank(a.MyString)==true)
    {
        cout << "Line is full - True";
    }
    else
    {
        cout << "Line is full - False";
    }
    b.input();
    if (a.theSame(a.MyString, b.MyString)==true)
    {
        cout << "Lines is same - True";
    }
    else
    {
        cout << "Lines is same - False";
    }
    string news = a.toString(a.MyString);
    cout << "New line \n" + news;
 
    system ("Pause");
    return 0;
}
Как вывести std::string на консоль ???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2012, 20:16     Робота с классами и перегрузка функций
Посмотрите здесь:

Задача на тему робота с классами и объектами в С++ - C++
Класс Coins (монеты). Класс сохраняет массив из 3 монет та общее количество лицевых сторон после последнего подбрасывания . Должны быть...

Работа с классами и перегрузка операций - C++
Доброго времени суток, форумчане. Есть вот такое задание: Вот с этим самым 3м пунктом и возникли сложности - не могу понять как...

перегрузка функций - C++
Написать реализацию перегруженных функций: long func (long * arr, int length); float func (float * arr, int length); Функция func...

Перегрузка функций - C++
Добрый вечер) очень нужна помощь нужно решить задачу, все решила, кроме одного пункта. создать класс окружность (okr) ....

Перегрузка функций - C++
Скажите пожалуйста с помощью каких операций можно перегружать функции? Спасиб!

Перегрузка функций - C++
Есть функция Message которую я пытаюсь перегрузить. Вроде все правильно, но не работает:cry: . Помогите разобраться. Ошибка на 44 и 45...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
06.05.2012, 20:52     Робота с классами и перегрузка функций #2
1. Зачем методам blank() и toString() принимать аргументы, если посылаешь данные своего же объекта?
2. Преобразовать в string можно проще. (см. метод toString в моём листинге)
3. Немного изменил проверки условий (ИМХО ==true не нужны). В общем, я ничего нового в плане функций не добавлял, только имеющееся поправил:
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
71
#include <iostream>
#include <cstring>
 
using namespace std;
 
class ryadoc
{
    public:
        char MyString[101];
        int n,m;
        void input()
        {
            cout << "Enter line: " << endl;
            cin.getline(MyString,100);
        }
        void output()
        {
            cout << MyString;
        }
 
        bool blank()
        {
            if (!strlen(MyString))
                return false;
            else
                return true;
        }
 
        bool theSame(char a[],char b[])
        {
            if (strcmp(a,b))
                return true;
            else
                return false;
        }
 
        string toString()
        {
            string a=string(MyString);
            return a;
        }
};
 
int main()
{
    ryadoc a,b;
    a.input();
    a.output();
    if (a.blank())
    {
        cout << " Line is full - True" << endl;
    }
    else
    {
        cout << " Line is full - False" << endl;
    }
    b.input();
    if (a.theSame(a.MyString, b.MyString))
    {
        cout << "Lines is same - True" << endl;
    }
    else
    {
        cout << "Lines is same - False" << endl;
    }
    string news = a.toString();
    cout << "\nNew line:\n"  << news;
 
    //system ("Pause");
    return 0;
}
P.S. если это так принципиально, можно конечно вернуть system("Pause") и conio.h .
IceSqueez
Java, C# - Expert
67 / 67 / 2
Регистрация: 09.08.2011
Сообщений: 284
06.05.2012, 20:57  [ТС]     Робота с классами и перегрузка функций #3
А так-же я хотел еще спросить как реализовать перевод с std::string в char[] ?

C++
1
2
3
4
5
6
7
8
void toChar(string a,char newChar[])
        {
            int size=strlen(a);
            for (int i=0; i<size; i++)
            {
                newChar[i]=a[i];
            }
        }
думал так, но... меня VisualStudio мягко послала

Помоги-те если кто-то знает как.

Добавлено через 5 минут
Цитата Сообщение от elivin Посмотреть сообщение
string news = a.toString();
* * cout << "\nNew line:\n" *<< news;
Данный вывод все ровно не выводит news, вылетает ошибка бинарного "<<" Error C2679
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
06.05.2012, 21:08     Робота с классами и перегрузка функций #4
Данный вывод все ровно не выводит news, вылетает ошибка бинарного "<<" Error C2679
Странно. Попробуй так выводить:
C++
1
cout << "\nNew line:\n"  << news.c_str();
Метод c_str() в классе string возвращает массив символов. Возможно со студией что-то. У меня geany + g++ - всё нормально робит.

А так-же я хотел еще спросить как реализовать перевод с std::string в char[] ?
Можно так (предположим, что news - объект класса string):
C++
1
2
char str[news.length()];
strcpy(str, news.c_str());
IceSqueez
Java, C# - Expert
67 / 67 / 2
Регистрация: 09.08.2011
Сообщений: 284
06.05.2012, 21:16  [ТС]     Робота с классами и перегрузка функций #5
C++
1
cout << "\nNew line:\n"  << news.c_str();
Спасибо, это сработало.

Цитата Сообщение от elivin Посмотреть сообщение
Можно так (предположим, что news - объект класса string):

C++
1
2
char str[news.length()];
strcpy(str, news.c_str());
я реализовал уже так:
C++
1
2
3
4
5
6
7
void toChar(string a)
        {
            for (int i=0; i<a.length(); i++)
            {
                MyString[i]=a[i];
            }
        }
но мне надо перед таким переводом очистить MyString, как это сделать ??
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
06.05.2012, 21:23     Робота с классами и перегрузка функций #6
но мне надо перед таким переводом очистить MyString, как это сделать ??
Можно не очищать, а добавить нуль-символ в конце строки, то есть:
C++
1
2
3
for (int i=0; i<a.length(); i++)
    MyString[i]=a[i];
MyString[a.length()]='\0';
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2012, 21:51     Робота с классами и перегрузка функций
Еще ссылки по теме:

Перегрузка функций - C++
Задача такая: перегрузить * так чтобы время умножалось на число, и так чтобы число умножалось на время. Не могу понять как реализовать...

Перегрузка функций - C++
Для одномерного массива из n вещественных элементов и од*номерного массива из n строк, найти соответственно: 1.1. Максимальный по модулю...

Перегрузка функций! - C++
Есть такое задание: С помощью механизма перегрузки функций реализовать функции для вывода на экран (первый параметр – тип выводимого...

Перегрузка функций - C++
АТД - множество с элементами типа int. Дополнительно перегрузить следующие операции: «+» - добавить элемент в множество(типа int +...


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

Или воспользуйтесь поиском по форуму:
IceSqueez
Java, C# - Expert
67 / 67 / 2
Регистрация: 09.08.2011
Сообщений: 284
06.05.2012, 21:51  [ТС]     Робота с классами и перегрузка функций #7
А ты часом не знаешь как сделать перевод с маленьких буков в большие и наооборот ??
тоесть метод которые с прописных символов строки MyString, делал строчные ??

Пример:

MyString = "ПрИвЕт"

первый метод возвращает:
MyString = "привет"

второй метод возвращает:
MyString = "ПРИВЕТ"

Добавлено через 18 минут
Нашел уже:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void toBig()
        {
            strupr(MyString);
        }
 
        void toLittle()
        {
            for (int i=0; i<strlen(MyString); i++)
            {
                MyString[i]=tolower(MyString[i]);
            }
        }
Yandex
Объявления
06.05.2012, 21:51     Робота с классами и перегрузка функций
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru