Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
puma3085
38 / 1 / 0
Регистрация: 27.03.2014
Сообщений: 38
#1

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

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

запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’ - C++
private: std::string firstName; }; std::string ClientData::getFirstName() const{ return firstName; } Дает в итоге...

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

Преобразование string в float - C++
подскажите как оптимальнее преобразовать число в формате CString -1E+008, которое я получаю из Excel-я. Может существуют стандартные...

Преобразование string в int - C++
у меня вот какая проблема.Я пытаюсь считывать строку,искать в ней числа и записывать их в двумерный массив целых чисел,подсчитывая их...

Преобразование String в float - C++
Добрый день уважаемые форумчане. Подскажите пожалуйста как преобразовать String в float. Заранее благодарен.

Преобразование string в int - C++
нужно текст (string) из textBox преобразовать в число (int)

1
John Prick
805 / 738 / 146
Регистрация: 27.07.2012
Сообщений: 2,110
Завершенные тесты: 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 в char* - C++
функция c_str переделывает стринг строку в const char* , а мне надо чтобы было без const то есть существует ли функция которая переделает...

Преобразование DWORD в string - C++
DWORD to string как сделать, гугл не помог) если что консоль visual studio c++

Преобразование string в char* - C++
int fun(char*); int main() { int a; string strok; strok=&quot;abc&quot;; strok+=&quot;cde&quot;; ...

Преобразование string в int - C++
Всем привет, нужно преобразовать string в int #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt;...


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

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

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