Форум программистов, компьютерный форум 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(){}; подробнее

Показать сообщение отдельно
nxtech
77 / 59 / 2
Регистрация: 26.06.2013
Сообщений: 198
27.06.2013, 23:46     Как реализовать метод ToString?
Я так понял, что метод fromstring должен быть обратным по отношению к tostring. Т.е. мы извлекаем из входного параметра str поля. Разделителями полей служит символ табуляции.
Например, строка: "Vanya\tIvanov\t+72222222222\tvanya@mail.ru". Из нее нужно извлечь четыре поля. Если извлечение полей прошло успешно - возвращаем true, иначе - false (существующий объект при этом не меняем).
Примерно можно сделать так:
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
#include <sstream> // нужно добавить заголовок.
bool visit::fromstring(std::string const& str)
{
    int const num_of_fields = 4; // Можно объявить в классе статической константой: 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;
}
Используем так:
C++
1
2
3
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; // ошибка в формате данных - не достаточно.
Все функции get_xxx и tostring следует сделать константными:
C++
1
2
3
std::string get_name() const;
...
std::string tostring() const;
Добавлено через 4 минуты
Еще функции viv и save стоит сделать также константными методами класса. В save использовать в качестве разделителей табуляцию, а не пробелы, чтоб всюду согласовано было.
 
Текущее время: 01:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru