Преобразование char в const char*

328
24 января 2017, 23:05
const char * str;
int kolich = help.size();
double znachen(0.0);
for(size_t i(0); i <= help.size(); i++)
{
    str = help[i];
    znachen += atof(str) * pow(10.0, kolich);
    kolich--;
}
return znachen;

Эта функция принимает вектор типа char и возвращает число. В каждой ячейке вектора хранится одна цифра. Для преобразования из char в double использую функцию atof. Но она в качестве аргумента берет const char*. И тут появляется ошибка и вопрос. Как мой элемент типа char сделать const char*?

Answer 1

Если у вас std::vector<char>, то надо взять адрес у элемента.

str = &(help[i]);

Этого недостаточно для функции atof, т.к. она на вход получает 0-детерминированную строку.

В вашем случае, если никак нельзя отказаться от std::vector<char> и очень хочется преобразовать именно char в число, можно применить не самый оптимальный трюк - преобразовать char в std::string

for(size_t i = 0, l = help.size(); i < l; ++i)
{
    std::string str(1, help[i]);
    znachen += atof(str.c_str()) * pow(10.0, kolich);
    kolich--;
}
Answer 2

У вас явная нестыковка. Если у вас векторов символов, и они все вместе составляют число типа double, то вам ответил @Sublihim, но при этом выглядит глупо проход по всем элементам вектора в цикле с использованием pow и не обработкой точки и т.п.

Если же вы хотите для каждого элемента вектора получить одноциферное число - из '1', например, 1 - то просто пишите

int n = help[i] - '0';
READ ALSO
Исключение вещественных чисел в int

Исключение вещественных чисел в int

Всем доброго времени, появилась некоторая необходимость в языке, который я не знаю абсолютноСобственно, по заданию необходимо сделать ввод...

287
Проблема с использованием SRWLOCK в MFC проекте [требует правки]

Проблема с использованием SRWLOCK в MFC проекте [требует правки]

Здравствуйте, прошу подсказкиРаботал с длл с абстрактным интерфейсом, содержащей набор функций для моего приложения

339
Как изменить действие при ON UPDATE/ON DELETE?

Как изменить действие при ON UPDATE/ON DELETE?

Как изменить действие при ON UPDATE/ON DELETE в MySQL? Вот как выглядит таблица сейчас:

292