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

Преобразование шаблона к string - C++

Восстановить пароль Регистрация
 
puma3085
38 / 1 / 0
Регистрация: 27.03.2014
Сообщений: 38
26.08.2016, 02:27     Преобразование шаблона к string #1
Доброго времени суток.
Возник такой вопрос. Пусть есть три переменные:
C++
1
2
3
int a = 1;
std::string s = "mama";
myClass d(3.14);
При этом myClass имеет следующую реализацию.
C++
1
2
3
4
5
6
7
8
class myClass{
private:
    double d;
public:
    myClass(double d1){ d = d1; }
    ~myClass(){}
    string toString(){ return std::to_string(d); }
};
Задача: написать функцию, которой передается любая из этих переменных, а возвращается строка со значением переменной. Так понимаю надо использовать шаблоны. В моем представлении: программа должна сначала пытаться вызвать функцию toString() от передаваемого ей объекта, если не получилось, то попробовать функцию std::to_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
template<typename t>
string toStr(t arg)
{
    string res = "";
    try{
        res = arg.toString();
        return res;
    }
    catch (exception e){}
    try{
        res = std::to_string(arg);
        return res;
    }
    catch (exception e){}
    try{ 
        res += arg;
        return res;
    }
    catch (exception e)
    {
        //cout << e.what << endl;
    }
    return res; 
}
не судите строго, только недавно изучаю с++, до этого писал на java.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2016, 02:27     Преобразование шаблона к string
Посмотрите здесь:

преобразование string в int C++
Преобразование string в int C++
Преобразование string в int C++
Преобразование string в char* C++
C++ преобразование string в char*
Преобразование из string в double C++
C++ Преобразование String в Byte C++
Преобразование из string в double C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
26.08.2016, 10:17     Преобразование шаблона к string #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от puma3085 Посмотреть сообщение
Так понимаю надо использовать шаблоны.
Не обязательно, достаточно простой перегрузки. Шаблонную функцию всё равно придётся специализировать под каждый тип, так что объём кода будет одинаков.
C++
1
2
3
std::string func(int a) { return std::to_string(a); }
std::string func(std::string & s) { return s; }
std::string func(myClass & m) { return m.toString(); }
Добавлено через 3 минуты
Шаблоны могут здесь помочь в том плане, что если std::to_string определена для всех встроенных типов, то можно обойтись одной функцией для них:
C++
1
2
3
4
5
6
// обобщённая функция
template <typename T>
std::string func(T x) { return std::to_string(x); }
// специализации, для которых нет std::to_string
template <> std::string func<std::string>(std::string & s ) { return s; }
template <> std::string func<myClass>(myClass & m) { return m.toString(); }
Yandex
Объявления
26.08.2016, 10:17     Преобразование шаблона к string
Ответ Создать тему

Метки
c++, template
Опции темы

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