Возможны ли ошибки аргумента относительно несоответствия типов? - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь взять текстовый файл со списком чисел в нем, поставить их в очередь, сохранить их в виде двойных чисел, а затем удалить их из другого текстового файла. Я полагаю, что проблема заключается в различии типов данных от того, когда файл читается как строки, до того, когда он сохраняется в очереди как удваивается, но я не уверен, как это исправить.

Я имеюпопытался прочитать текстовый файл, сначала они конвертировали их из строк в двойники, сохраняя их как очередную очередь, затем помещая вторую очередь с двойниками в выходной файл.

void queue::enqueue(double nums)
{
    if (isempty())
    {
        front = new numstack(nums);
        rear = front;
    }
    else
    {
        rear->next = new numstack(nums);
        rear = rear->next;
    }
}

void queue::dequeue(double &nums)
{
    numstack *temp = nullptr;
    nums = front->val;
    temp = front;
    front = front->next;
    delete temp;

int main()
{
    queue q;
    double nums;
    int numnums = 0;

    ifstream(input);
    ofstream(output);

    input.open("input.txt");
    while (input.get(nums))
    {
        q.enqueue(nums);
        numnums++;
    }

Ошибка в основной функции происходит в строке input.open ("input.txt);

Две ошибки:" нет экземпляра перегруженной функции "std:: basic_ifstream <_Elem, _Traits> :: get [with _Elem = char, _Traits = std :: char_traits] "соответствует списку аргументов" и

"std :: basic_istream> & std :: basic_istream> :: get(std :: basic_streambuf> &, _ Elem) ': невозможно преобразовать аргумент 1 из' double 'в' _Elem & "

1 Ответ

0 голосов
/ 16 октября 2019

Вы не можете извлечь double с помощью get :

Извлекает символ или символы из потока.

Вы можете использовать std :: atof чтобы преобразовать ваш ввод char * во всплывающее.

...