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

Преобразовать любое значение в строку - C++

Восстановить пароль Регистрация
 
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
07.07.2014, 15:54     Преобразовать любое значение в строку #1
Привет. У меня есть примерно такая функция:
C++
1
2
3
4
5
template<typename T>
std::string ToString(T value)
{
    return std::to_string(value);
}
она работает на стандартных типах, ну это понятно. Как сделать чтобы код хотя бы мог компилироваться, если я передам в нее (в эту функцию) например свой класс? Спасибо.
Код
error C2665: 'std::to_string' : none of the 9 overloads could convert all the argument types
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2014, 15:54     Преобразовать любое значение в строку
Посмотрите здесь:

В строке записано вещественное число в форме с фиксированной точкой. Преобразовать строку, записав в нее округленное до целых значение данного числа. C++
Вычислить значение выражения У=(AB-C)/CD где a,b,c,d любое положительное числа C++
C++ Любое значение числа
C++ Как правильно преобразовать строку символов в строку типа CComBSTR?
C++ В любое место матрицы добавить новый столбец/строку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
07.07.2014, 16:02     Преобразовать любое значение в строку #2
Нужно перегрузить std::to_string, чтобы он понимал твой класс
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
07.07.2014, 17:15  [ТС]     Преобразовать любое значение в строку #3
orange_fox, дело в том, что я не знаю какой класс будет использован.
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
07.07.2014, 17:36     Преобразовать любое значение в строку #4
А to_string() откуда знает как из твоего класса строку получить? У твоих классов должно быть нечто общее, например - метод получения числа, чтобы можно было написать один template функции и это работало бы с каждым из твоих классов. Например, у каждого из твоих классов есть метод getInt():
C++
1
2
3
4
5
template <typename T>
string myClassesToString(T& myclass)
{
    return to_string(myclass.getInt())
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
07.07.2014, 18:45     Преобразовать любое значение в строку #5
Либо как-то так сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
 
class Foo
{
public:
    operator char* ()
    {
        return "asdf";
    }
};
 
int main()
{
    std::cout << Foo() << std::endl;
    return 0;
}
Yandex
Объявления
07.07.2014, 18:45     Преобразовать любое значение в строку
Ответ Создать тему
Опции темы

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