«Ошибка: нет оператора для cin >>» Я не могу понять, что я делаю здесь неправильно - PullRequest
2 голосов
/ 21 сентября 2010

Я студент и только начал изучать C ++ на прошлой неделе, так что этот вопрос, вероятно, очень низкий уровень, но я не могу понять это.

Я немного искал, но не могу найти никаких результатов, или, может быть, я ищу не ту вещь.

Есть две части cin. Один принимает int вне цикла, другой принимает строку внутри цикла.

Я получаю сообщение об ошибке компиляции: «Ошибка, что ни один оператор не соответствует этим командам», хотя я только что использовал их 5 строк назад.

Помощь

#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    // variable declaration
    const double payIncrease = 7.6;
    string employeeName;
    double initialSalary;
    double backPay;
    double employeeAnnualSalary;
    double employeeMonthlySalary;

    int numEmployees;

    // streams of information
    ofstream outStream;
    outStream.open("employeeRecords.txt");

    // console io's
    cout<<"Enter how many employees you have:";
    cin>>numEmployees;

    for(int i = 0; i <numEmployees;i++)
    {
            cout<<"What is Employee number: "<<i<<"'s name:";
            cin>>employeeName;

            cout<<"How much does that employee earn now: ";
            cin>>initialSalary;
    }

    outStream <<"annual salary was: " << numEmployees;
    outStream.close();

    return 0;

}

Ответы [ 4 ]

5 голосов
/ 21 сентября 2010

Вот версия, которая на самом деле компилируется. Вы можете выяснить, что вы пропустили самостоятельно; -)

#include <iostream>
#include <string>
using namespace std;

int main()
{
    cout << "Enter how many employees you have:";
    int numEmployees = 0;
    cin >> numEmployees;

    for(int i = 0; i < numEmployees; ++i)
    {
        cout << "What is Employee number: " << i << "'s name:";
        string employeeName;
        cin >> employeeName;
    }
}
2 голосов
/ 21 сентября 2010

Всего случайностей.

я просто положил

 #include<string>

вверху.

Я не знал, что консоль не может обрабатывать строки

0 голосов
/ 21 сентября 2010

я получаю сообщение об ошибке компиляции, говорящее Error no operator matches these commands, хотя я просто использовал их 5 строк назад.

Если это относится к перехваченному вами сообщению, значит вы ошибаетесь. Как и все другие функции, операторы могут быть перегружены в C ++. Это означает, что может быть несколько функций, использующих одно и то же имя , при условии, что они принимают разные аргументы (или являются либо const, либо не являются функциями-членами).

Имя переменной numEmployees выглядит для меня так, как если бы оно указывало на число , тогда как employeeName, скорее всего, относится к строке . Так что это вызовет две разные перегрузки из operator>>() для ввода этих переменных.

По причинам, которые я здесь опускаю, чтение перегрузки operator>>() в строку определено в заголовке <string>, в то время как значения для встроенных типов (int и т. Д.) Определены в <istream> , который вы обычно получаете, включая <iostream>.

Итак, учитывая ту небольшую информацию, которую вы нам дали, это длинный выстрел, но Полагаю, вам не хватает #include <string>.

0 голосов
/ 21 сентября 2010
im getting a compile error saying ""Error no operator matches these commands" even though i just used them 5 lines ago. 

Звучит как проблема с пространством имен.

Добро пожаловать в удивительный мир программирования.;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...