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

Как реализовать метод ToString? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перенос на новую строку http://www.cyberforum.ru/cpp-beginners/thread913064.html
У меня довольно длинная функция класса, которая от меня то и не зависит, но нужно её вписать, строка получается длинная и хочется перенести на новую строчку часть, вот пример: MyClass.parametr1().parametr2().parametr3().parametr4().parametr5().parametr6().parametr7().parametr8(); Вообщем нечто подобная и у меня, и все операторы только dot для доступа.
C++ Функция textattr в С++ Здравствуйте. Функция которая задает одновременно цвет текста и фона. В Интернете очень мало информации про нее, обьясните как ее используют, какие параметры передают и т.п. Спасибо. http://www.cyberforum.ru/cpp-beginners/thread913060.html
Вызов функции в ребенке C++
Доброе время суток. Есть класс A и в нем есть функция void funcA(void). И есть каласс B : public A который унаследует A. Но когда я пишу в конструкторе класса B у меня выводит ошибку о нарушении прав: B::B(void) { funcA(); //здесь выводит ошибку } Но за-то если обявить класс B в каком-то мейне и там-же вызвать funcA то все нормально
C++ Изменить строку – во всех словах, имеющих нечетное количество символов, средний символ удалить
Дана строка символов. Изменить строку – во всех словах, имеющих нечетное количество символов, средний символ удалить. #include <iostream> #include <string.h> #include <cstdlib> using namespace std; char* remove_symbol( char * s) {
C++ Жадный алгоритм на графе http://www.cyberforum.ru/cpp-beginners/thread913028.html
Собственно, нужно написать программу поиска кратчайшего пути на графе "жадным методом". То есть, дан ориентированный взвешенный граф (можно и неориентированый, как получится) и у рёбер даны их длины (весы). Вывод желательно должен осуществляться в виде 3 массивов: 1 - начальная вершина, 2 - конечная вершина, 3 - вес ребра. То есть, грубо говоря, если написано "{..., A, ...}", под этим "{..., B,...
C++ Запись класса в файл Доброго времени суток! Вот появился тупик, есть базовый класс и производные классы class Figure{ protected: int x,y; TColor color; int size; int type; public: Figure(){}; подробнее

Показать сообщение отдельно
Korhall
 Аватар для Korhall
7 / 7 / 1
Регистрация: 02.03.2013
Сообщений: 69
03.07.2013, 21:37  [ТС]     Как реализовать метод ToString?
Ура! Я сдал! Спасибо nxtech! Спасибо всем, кто помогал. Как и обещал - выкладываю полный текст программы - вдруг кому пригодится.
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// main.cpp
#include <iostream>
#include "card.h"
#include <vector>
#include <fstream>
#include <sstream>
 
using namespace std;
/*
// вывод на печать
        void viv(std::string cname, std::string clast_name, std::string ctel, std::string cemail)
        {
            std::cout << cname << "\t "
        << clast_name << " \t "
        << ctel << "\t" << cemail << "\t" << std::endl;
        } */
 
// запись в файл
        void save(std::string cname, std::string clast_name, std::string ctel, std::string cemail)
        {
            
    ofstream fout;
        fout.open("base.txt", std::ios::app);
    fout << cname << " " << clast_name << " " 
        << ctel << " " << cemail; 
    fout<< std::endl;
    fout.close();
            
        }
 
int main()
{
    // Создание объекта класса visit
    
 
    std::string name;
    std::string last_name;
    std::string tel;
    std::string email;
    
    // Ввод имени с клавиатуры
    std::cout << "Name: ";
    getline(std::cin, name);
 
    // Ввод фамилии
    std::cout << "Last name: ";
    getline(std::cin, last_name);
 
    // Ввод номера телефона
    std::cout << "Telephone number: ";
    getline(std::cin, tel);
 
    // Ввод адреса электронной почты
    std::cout << "E-mail: ";
    getline(std::cin, email);
 
    //передача параметров конструктору
    
    visit card(name, last_name, tel, email);
    //std::cout << card.tostring() << endl; 
    
 
    //viv(name, last_name, tel, email);
    save(name, last_name, tel, email);
 
 
    //создание ветора visit
    std::vector<visit> v;
 
    // Резервируем место в контейнере для трех элементов.
    v.reserve(3);
    
    // Не забыть размер == 0, а вместимость == 3.
    std::cout << "size: " << v.size() << std::endl;
    std::cout << "capacity : " << v.capacity() << std::endl << std::endl;
 
    // Добавляем элементы в контейнер.
    v.push_back(card);
    v.push_back(visit("Vanya", "Ivanov", "+72222222222", "vanya@mail.ru"));
    v.push_back(visit("Petya", "Petrov", "+73333333333", "petya@mail.ru"));
 
    // Выводим содержимое контейнера.
    for (unsigned int i = 0; i < v.size(); i++)
    std::cout << v[i].tostring() << std::endl;
 
    // Размер контейнера изменился.
    std::cout << "size: " << v.size() << std::endl << std::endl;
 
    // Освобождаем контейнер.
    v.pop_back();
    for (unsigned int i = 0; i < v.size(); i++)
    std::cout << v[i].tostring() << std::endl;
 
    // Размер контейнера изменился.
    std::cout << "size: " << v.size() << std::endl << std::endl;
 
    v.pop_back();
    for (unsigned int i = 0; i < v.size(); i++)
    std::cout << v[i].tostring() << std::endl;
 
    // Размер контейнера изменился.
    std::cout << "size: " << v.size() << std::endl << std::endl;
 
    v.pop_back();
    // Размер контейнера изменился (должен быть пуст).
    std::cout << "size: " << v.size() << std::endl << std::endl;
 
    //методы tostring и fromstring
    std::string str = card.tostring();
    std::cout << str << std::endl;
 
std::cout << card.fromstring("Vanya\tIvanov\t+72222222222\tvanya@mail.ru\???") << std::endl; // ошибка в формате данных - лишние.
std::cout << card.fromstring("Vanya\tIvanov\t+72222222222\tvanya@mail.ru") << std::endl;
std::cout << card.fromstring("\t+72222222222\tvanya@mail.ru") << std::endl; // ошибка в формате данных - не достаточно.
 
 
    return 0;
}
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
// card.h
#pragma once /* Защита от двойного подключения заголовочного файла */
#include <string>
#include <vector>
#include <sstream>
 
 
using namespace std;
class visit {
    public:
        // Установка имени
        void set_name(std::string);
       
        // Получение имени
        std::string get_name();
 
        // Установка фамилии
        void set_last_name(std::string);
 
        // Получение фамилии
        std::string get_last_name();
 
        // Установка номера телефона
        void set_tel(std::string);
 
        // Получение номера телефона
        std::string get_tel();
 
        // Установка адреса электронной почты
        void set_email(std::string);
 
        // Получение адреса электронной почты
        std::string get_email();
 
        //деструктор класса visit
        ~visit();
 
        //конструктор класса visit
        visit(std::string cname, std::string clast_name, std::string ctel, std::string cemail);
 
        //объявление метода tostring
        std::string visit::tostring();
 
        //объявление метода fromstring
        bool visit::fromstring(std::string const& str);
 
    private:
        // номер телефона
        string tel;
        // адрес электронной почты
        string email;
        // Имя
        std::string name;
        // Фамилия
        std::string last_name;
};
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// met.h
#include "card.h"
#include <iostream>
#include <vector>
#include <sstream>
 
using namespace std;
 
        // альтернативный вариант конструктора visit
        /* visit::visit(std::string cname, std::string clast_name, std::string ctel, std::string cemail)
    {
        visit::set_name(name);
        visit::set_last_name(last_name);
        visit::set_tel(tel);
        visit::set_email(email); 
 
    } */
 
        //конструктор visit
        visit::visit(std::string cname, std::string clast_name, std::string ctel, std::string cemail) :
name(cname), last_name(clast_name), tel(ctel), email(cemail)
{
}
 
    //деструктор visit
    visit::~visit()
{
        //cout << "Memory have been erased" << endl;
}
 
        // Установка имени 
        void visit::set_name(std::string cname)
{
        visit::name = cname;
}
 
        // Получение имени 
        std::string visit::get_name()
{
        return visit::name;
}
 
// Установка фамилии 
        void visit::set_last_name(std::string clast_name)
{
        visit::last_name = clast_name;
}
 
        // Получение фамилии
        std::string visit::get_last_name()
{
        return visit::last_name;
}
 
        // Установка номера телефона
        void visit::set_tel(std::string ctel)
{
        visit::tel = ctel;
}
 
        // Получение номера телефона
        std::string visit::get_tel()
{
        return visit::tel;
}
 
        // Установка адреса электронной почты
        void visit::set_email(std::string cemail)
{
        visit::email = cemail;
}
 
        // Получение номера телефона
        std::string visit::get_email()
{
        return visit::email;
}
 
        //реализация метода tostring
        std::string visit::tostring()
{
        return (name + " \t " + last_name + " \t " + tel + " \t " + email);
}
 
        //реализация метода fromstring
        bool visit::fromstring(std::string const& str)
{
    static int const num_of_fields = 4; 
 
    std::istringstream is(str);
    std::vector<std::string> v;
    v.reserve(num_of_fields);
    std::string s;
 
    while (is >> s)
    {
        if (v.size() == num_of_fields) return false;
        v.push_back(s);
    }
    if (v.size() < num_of_fields) return false;
 
    name = v[0];
    last_name = v[1];
    tel = v[2];
    email = v[3];
 
    return true;
}
 
Текущее время: 18:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru