Я прорабатываю Программирование - принципы и практика Бьярна Страуструпа, и довольно простое упражнение поставило меня в тупик (это только часть 2 из 11).

#include "../../std_lib_facilities.h"
#include <stdlib.h>

//Write a program that consists of a while loop (each time around the loop) reads in two ints and then prints them. Exit the program when a terminating | is entered.

int main()
{
    char temp;
    char* endptr = 0;
    while (temp != '|')
    {
        double value;
        vector<int> values;
        for (string temp; values.size() < 2;)
        {
            cin >> temp;
            {
                if (temp == "|")
                    break;
                else
                    value = strtod(temp, &endptr); 
                    values.push_back(value);
            }
        }
        cout << values[0] << "\n" << values[1] << "\n" << "\n";
        values.clear();
    }
}

Visual Studio 2017 выдает ошибку здесь:

else
    value = strtod(temp, &endptr); 

С аргументом temp, сообщающим, что "не существует подходящей функции преобразования из" std :: string "в" const char * ", что является именно той функцией, которую я ожидал от strtod.

c++
1
Liam Nichol 9 Ноя 2018 в 16:21

1 ответ

Лучший ответ

Поскольку вы используете C ++, используйте вместо этого std::stod() (C ++ 11)

https://en.cppreference.com/w/cpp/string/basic_string/stof

5
Matthieu Brucher 9 Ноя 2018 в 13:32