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

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

Восстановить пароль Регистрация
 
IceSqueez
Java, C# - Expert
 Аватар для IceSqueez
66 / 66 / 2
Регистрация: 09.08.2011
Сообщений: 284
06.05.2012, 20:16     Робота с классами и перегрузка функций #1
Добавить в класс для роботы со строками
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++ Перегрузка функций!
C++ перегрузка функций
C++ Перегрузка функций
Работа с классами и перегрузка операций C++
C++ Перегрузка функций
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
 Аватар для IceSqueez
66 / 66 / 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
 Аватар для IceSqueez
66 / 66 / 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++
Задача на тему робота с классами и объектами в С++ C++

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

Или воспользуйтесь поиском по форуму:
IceSqueez
Java, C# - Expert
 Аватар для IceSqueez
66 / 66 / 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     Робота с классами и перегрузка функций
Ответ Создать тему
Опции темы

Текущее время: 02:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru