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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
WASAW
3 / 3 / 0
Регистрация: 10.11.2009
Сообщений: 102
#1

Преобразование типов - C++

06.06.2011, 12:28. Просмотров 1274. Ответов 5
Метки нет (Все метки)

Подскажите пожалуйста. Есть класс для работы со строками
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class String                    //  Объявление строкового класса
{
   private:
       char* S;                  //  Строка
       size_t len;                  //  Длина строки
   public:
       String();                 //  Конструктор по умолчанию
       String(const char* s);    //  Перегруженный конструктор
       String(const String& s);  //  Конструктор копирования
       ~String() { delete [] S; }//  Деструктор         
       //  Дружественные функции
        //  Перегрузка бинарного оператора
        //  Функция реализует сцепление строк
        friend String operator+(const String&, const String&);    
        //  Перегрузка бинарного оператора
        //  Функция реализует пересечение строк
        friend String operator*(const String&, const String&);
        //  Перегрузка унарного оператора
        //  Функция реализует поиск уникальных элементов строки
        friend String operator!(const String&);        
        //  Перегрузка бинарного оператора
        //  Функция реализует ввод объектов класса с клавиатуры
        friend istream& operator>>(istream&, String&);
        //  Перегрузка бинарного оператора
        //  Функция реализует вывод объектов класса на экран
        friend ostream& operator<<(ostream&, const String&);
        //Перегрузка операторов сравнения
        friend void operator<(const String&, const String&);
        friend void operator>(const String&, const String&);
        friend void operator<=(const String&, const String&);
        friend void operator>=(const String&, const String&);
        friend void operator==(const String&, const String&);
        friend void operator!=(const String&, const String&);
        String& operator=(const String&);
        //  Перегрузка типа
        //  Функция реализует преобразование объекта класса к типу char*
        operator char*() { return S; }
        //  Функция возвращает длину строки
        size_t GetLen() { return len; }  
        //Преобразование к типу интеджер
        int transformation_int();
        //Преобразование к типу дабл
        double transformation_double();
        //Преобразование к типу лонг
        long int transformation_long();
};
Нужно преобразовать из строки в число типа int:
C++
1
2
3
4
5
6
7
int String::transformation_int()
{
    String *str = this;
    int result;
    result = atoi(*str);
    return result;  
}
если ввести 15.5 в result заносится 15, но в объект класса String все равно заносится 15.5
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2011, 12:28     Преобразование типов
Посмотрите здесь:

Преобразование типов C++
Преобразование типов C++
Преобразование типов C++
C++ преобразование типов
C++ Преобразование типов
Преобразование типов C++
Преобразование типов. C++
Преобразование типов C++
Преобразование типов C++
C++ Преобразование типов
C++ Преобразование типов в С++
Преобразование типов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
06.06.2011, 12:36     Преобразование типов #2
Цитата Сообщение от WASAW Посмотреть сообщение
если ввести 15.5 в result заносится 15, но в объект класса String все равно заносится 15.5
Не совсем верно. В объекте класса String остаётся 15.5. Понимаете, вы прочитали строку S, взяли её целую часть числа, которое хранится в ней, и вернули её. Но строку-то вы не тронули, она как была "15.5", так "15.5" и осталась.
WASAW
3 / 3 / 0
Регистрация: 10.11.2009
Сообщений: 102
06.06.2011, 12:44  [ТС]     Преобразование типов #3
А как ее изменить?
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
06.06.2011, 12:46     Преобразование типов #4
strcpy. Или найти первую точку и присвоить вместо неё \0... Вариантов много, но ЗАЧЕМ? Эта функция преобразования обязательно должна быть деструктивной?
WASAW
3 / 3 / 0
Регистрация: 10.11.2009
Сообщений: 102
06.06.2011, 12:59  [ТС]     Преобразование типов #5
мне обязательно чтобы объект класса String принимал нужное значение
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
06.06.2011, 13:10     Преобразование типов #6
Сначала в int через atoi, потом назад через itoa. Или sprintf.
Yandex
Объявления
06.06.2011, 13:10     Преобразование типов
Ответ Создать тему
Опции темы

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