infile.get(row[i]); You never reserve the space in your string. row.resize( columns );
edit: note that it is resize, no reserve, or you could corrupt the container.
Thanks, for some reason I thought string memory was automatically allocated when you add to the string. I had a lot of other mistakes but they're fixed now.
I still need to know if there is a way to use infile.get() to extract a specific amount of characters and store them in a std::string.