2014-08-30 3 views
0

простая программа рассказывает, сколько молока стоит, что бы я не понял, почему я получаю эту ошибку «нет соответствия для« оператора >> »в« std :: cin ?? » im новичок в C++, но все равно, какого черта.нет совпадений для 'operator >>' in 'std :: cin?

также эта ошибка: "В функции 'ИНТ основной()':"

#include <iostream> 
using namespace std; 
/* run this program using the console pauser or add your own getch, system("pause") or  input loop */ 

const double CARTONLOAD = 3.78; 
const double CARTONCOST = 3.78 * .38; 
const double CARTONPROFIT = 0.27; 

int main() 
{ 
    double totalmilk = 0; 
    double milkcartonsneeded = 0; 
    double milkcost = 0; 

    cout << "Enter total amount of milk produced in the morning in Liters" << endl; 
    cin >> totalmilk >> endl; 
    milkcartonsneeded = totalmilk/CARTONLOAD; 
    cout << " Number of milk cartons needed to hold milk: " << milkcartonsneeded << endl; 
    milkcost = milkcartonsneeded * CARTONCOST; 
    cout << " The cost of producing milk is: " << milkcost << endl; 
    cout << " The profit for producing milk is: " << milkcartonsneeded * CARTONPROFIT - milkcost << endl; 

    return 0; 
} 

ответ

4

Это проблема

cin >> totalmilk >> endl; 

Это дает ошибку из-End L,. Убери это.

7

endl - манипулятор выходного потока. cin - входной поток. Я не уверен, что вы ожидаете endl сделать здесь:

cin >> totalmilk >> endl; 

Но это неправильно.

+0

i мысль endl - новая линия lol – 2014-08-30 23:13:10

+1

@ user3542679: Это правильно. Это заставляет поток выводить новую строку (в дополнение к другим вещам). Но 'cin' ничего не выводит. Это работа 'cout'. –

1

operator<< имеет перегрузку, которая принимает указатель на функцию, которая принимает std::basic_ostream. Это позволяет использовать «манипуляторы потока», то есть std::endl, в цепи operator<<. Это позволяет сделать следующее, например:

std::cout << "hey."; 
std::endl(std::cout); 
std::cout << "hello."; 

Поскольку std::endl это просто функция, которая принимает std::basic_ostream. Однако он также возвращает один по ссылке (аналогично operator<<), то есть он может появляться в цепочке, то есть std::cout << std::endl.

С std::cin является std::basic_istream, у вас есть несовместимые аргументы.

+0

Компилятор никогда не доходит до сути попытки разрешить вызов 'std :: endl (std :: cin)'. OP использует 'operator >>' (не 'operator <<'), и нет перегрузки, которая будет работать для 'std :: endl'. –

Смежные вопросы