It's not a good idea to use EOF in a while loop. Read more in Why is iostream::eof inside a loop condition considered wrong?
In c++, vectors should be preferred over arrays. However, your teacher knows something more to suggest using an array here. For that reason I am providing a solution with an array:
- Read the file line by line
- Extract the id and the string
- Assign it to the i-th cell of the array
Code:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class City {
    int id;
    string name;
public:
    City() {}
    City(int id, string name) : id(id), name(name)
    {
    }
    void print()
    {
        cout << "ID = " << id << ", name = " << name << endl;
    }
};
void load_file(City* cities, const int n)
{
    ifstream v_file("cities.txt");
    if (v_file.is_open()) {
        int number, i = 0;
        string str;
        char c;
        while (v_file >> number >> c >> str && c == ',' && i < n)
        {
            //cout << number << " " << str << endl;
            cities[i++] = {number, str};
        }
    }
    v_file.close();
}
int main()
{
    City cities[4]; // assuming there are 4 cities in the file
    load_file(cities, 4);
    for(unsigned int i = 0; i < 4; ++i)
        cities[i].print();
    return 0;
}
Same solution with std::vector, if you are interested. =) If you haven't been taught about them, I suggest you skip that part and come back later when you do that in the course.
Use a vector of City. Read the file line by line, and push back into the vector every line you read, by constructing an instance of your class, and you are done!
Example:
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
class City {
    int id;
    string name;
public:
    City() {}
    City(int id, string name) : id(id), name(name)
    {
    }
    void print()
    {
        cout << "ID = " << id << ", name = " << name << endl;
    }
};
void load_file(vector<City>& cities)
{
    ifstream v_file("cities.txt");
    if (v_file.is_open()) {
        int number;
        string str;
        char c;
        while (v_file >> number >> c >> str && c == ',' && i < n)
        {
            //cout << number << " " << str << endl;
            cities.push_back({number, str});
        }
    }
    v_file.close();
}
int main()
{
    vector<City> cities;
    load_file(cities);
    for(unsigned int i = 0; i < cities.size(); ++i)
        cities[i].print();
    return 0;
}
Input:
Georgioss-MacBook-Pro:~ gsamaras$ cat cities.txt 
1,NYC
2,ABQ
3,CCC
4,DDD
Output:
Georgioss-MacBook-Pro:~ gsamaras$ g++ -Wall -std=c++0x main.cpp 
Georgioss-MacBook-Pro:~ gsamaras$ ./a.out 
ID = 1, name = NYC
ID = 2, name = ABQ
ID = 3, name = CCC
ID = 4, name = DDD