Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
puma3085
38 / 1 / 0
Регистрация: 27.03.2014
Сообщений: 38
#1

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

26.08.2016, 02:27. Просмотров 215. Ответов 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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2016, 02:27
Ответы с готовыми решениями:

Запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’
private: std::string firstName; }; std::string...

Преобразование string* в string
Здравствуйте, друзья. У меня есть класс. В нем описано поле string *GPS; В...

Преобразование string в int
Добрый день. Есть переменная типа string, в которой записана цифра. Как мою...

Преобразование map в string
Доброго времени суток. Есть программа для подсчета количества слов в тексте ...

Преобразование из string в double
Объясните пожалуйста в чем связь между преобразованием данный из string в...

1
John Prick
831 / 764 / 256
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 3
26.08.2016, 10:17 #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(); }
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2016, 10:17

Преобразование string to char
В общем никак не получается перегнать из строки в чар. Что надо: Имеется...

Преобразование string в char*
char* string_to_char(string str){ int size = str.size(); char *ch = new...

Преобразование из string в double
Вот простой пример демонстрирующий данную проблему: Так работает: #include...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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