It worked fine when I had each spot on the board it's own string, but when I changed it into an array for other stuff in the code it stopped working. I don't get errors or anything, it just doesn't put an X or an O anymore.
Classes, in c++, are a way to combine data structures and functions.
What are objects? Well, an object must be defined, therefore we must define it through variables in code. Objects can also have actions performed on them, which is defined in the code as well. In C++, classes are data structures (in a way) that contain functions which allow a programmer to modify the data.
Instead of writing functions and useing a data structure to load and manipulate a set of data, I can declare a class which stores that data. I can also have this class load all of the data needed upon it's construction (aka, when an instance of the class is declared, it will load the data from the file) and treat it like "data from the file" instead of, say, "a list of strings, integers, and fractions I just loaded".
The reasn you might want to use classes, is that in larger projects, objects are easier to use than functions/variables. It's the difference between calling all of the functions and performing operations on the data, and calling a single function member of a class.
I could load a list with vector<string> mylist(load_list_of_info("myfile.txt"));, or I could simply listfile f("myfile.txt"); and then whenever I want to reference somthing, I could manipulate a public vector (cout<< f.mylist for example).
It would simply make it easier for you to handle the data.