-1

I'm trying to cout a vector[i] in a for loop, and it says something is wrong with the "<<".

I'm not making this for anybody, I'm just doing this for practice. I don't understand why I can't cout the vector of students.

Source:

int main()
{
    struct STUDENT
    {
        int id = 0;
        string name;
    };

    int inc = 0;
    int numstud;

    cout << "Enter number of Students: ";
    cin >> numstud;

    vector<STUDENT> student;

    student.resize(numstud);

    for (vector<STUDENT>::size_type i = 0; i < numstud; i++)
    {
        student[i].id = inc++;
    }

    for (vector<STUDENT>::size_type i = 0; i < numstud; i++)
    {
        cout << student[i] << "\n"; //THE ERROR IS RIGHT HERE!!! with the "<<"
    }
}

Errors when I'm trying to run:

1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\ostream(978): or       'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,unsigned char)'
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\ostream(971): or       'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,const unsigned char *)'
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\ostream(964): or       'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,signed char)'
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\ostream(957): or       'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,const signed char *)'
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\ostream(831): or       'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,char)'
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\ostream(784): or       'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,const char *)'
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\ostream(746): or       'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,char)'
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\ostream(699): or       'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<char,std::char_traits<char>>    (std::basic_ostream<char,std::char_traits<char>> &,const char *)'
Colby Ryan Freeman
  • 325
  • 1
  • 3
  • 8

1 Answers1

1

C++ doesn't assume anything about how to print user types. You can either tell it how through operator overloading or print specific fields:

std::cout << student[i].<field>; //replace <field> with name or id
Community
  • 1
  • 1
chris
  • 60,560
  • 13
  • 143
  • 205