Строки C++: преобразование строки в число.

Еще одна задача, которая часто встречается на форумах — это вопрос по преобразованию строки в число. И не важно какого типа число: int, float, или другого. Важен сам факт преобразования, сама технология.

На самом деле если особо не забивать голову замарочками, типа «функция atoi не всегда работает корректно (что я проверил на практике, но не искал причины)», то вопрос решается очень легко.

Чтоб не тянуть я сразу приведу 2 функции преобразования строки в число типа int. Вы можете просто изменить тип данных и получите float, double…

Для начала нужно подключить заголовочный файл sstream

….

#include <sstream>

….

int str_to_int(string str){
    stringstream sstr;
    int int_val;
    //    Если строка пустая, то вернем 0
    if (str.empty())
        return 0;
    sstr << str;
    sstr >> int_val;
    return int_val;
}

int str_to_int(char* str){
    stringstream sstr;
    int int_val;
    //    Если строка пустая, то вернем 0
    if (strlen(str) == 0)
        return 0;
    sstr << str;
    sstr >> int_val;
    return int_val;
}

Так всё легко и просто. А для удобства я бы порекомендовал вынести все функции преобразования строк в отдельный класс и работать с ним.

Kamo Petrosyan Автор

Комментарии

    Тимур Абдулов

    (Июнь 1, 2015 - 7:54 дп)

    Во блин дибилизм щас начал писать на си программы офигеваю от такого идиотизма ))) стока мучении с каким то преобразованием не подумате ничего такого но на кой он вообще нужен этот С++ если с такими вещами стока заморочек не проще ли писать на ассемблере не было таких проблем бред какой то на ассемблере проще реализовать что то чем на С++ это уже не язык это Гомно

    Илья

    (Апрель 16, 2017 - 2:56 пп)

    На ассемблере придется писать свой код под каждый процессор.

Добавить комментарий

Ваш e-mail не будет опубликован.